{"version":3,"sources":["webpack:///./node_modules/vue-waterfall/lib/waterfall-slot.vue?8be5","webpack:///./node_modules/vue-waterfall/lib/waterfall.vue?f5a0","webpack:///./src/components/device/sl-vue-tree-dark.scss?16f5","webpack:///./node_modules/vue-waterfall/lib/waterfall.vue?23c6","webpack:///node_modules/vue-waterfall/lib/waterfall.vue","webpack:///./node_modules/vue-waterfall/lib/waterfall.vue?f5b5","webpack:///./node_modules/vue-waterfall/lib/waterfall.vue","webpack:///./src/assets/refresh-icon.svg","webpack:///./src/components/dialogs/dialogs.scss?f001","webpack:///./src/components/mixins/device-memo/deviceMemo.vue?bf01","webpack:///./node_modules/vue-waterfall/lib/waterfall-slot.vue?fc88","webpack:///node_modules/vue-waterfall/lib/waterfall-slot.vue","webpack:///./node_modules/vue-waterfall/lib/waterfall-slot.vue?52bf","webpack:///./node_modules/vue-waterfall/lib/waterfall-slot.vue","webpack:///./src/components/device/components/dialogAccess.vue?65f8","webpack:///./src/components/device/index.vue?28ac","webpack:///./src/components/mixins/sl-vue-tree/sl-vue-tree.vue?1b13","webpack:///./src/components/mixins/sl-vue-tree/sl-vue-tree.js","webpack:///./src/components/mixins/sl-vue-tree/sl-vue-tree.js?6bd0","webpack:///./src/components/mixins/sl-vue-tree/sl-vue-tree.vue","webpack:///./src/components/dialogs/wol.vue?8eda","webpack:///src/components/dialogs/wol.vue","webpack:///./src/components/dialogs/wol.vue?0b29","webpack:///./src/components/dialogs/wol.vue","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./src/components/mixins/device-memo/deviceMemo.vue?1866","webpack:///src/components/mixins/device-memo/deviceMemo.vue","webpack:///./src/components/mixins/device-memo/deviceMemo.vue?bd0e","webpack:///./src/components/mixins/device-memo/deviceMemo.vue?4099","webpack:///./src/components/mixins/device-memo/index.js","webpack:///./src/components/device/components/dialogAccess.vue?38b0","webpack:///src/components/device/components/dialogAccess.vue","webpack:///./src/components/device/components/dialogAccess.vue?3f65","webpack:///./src/components/device/components/dialogAccess.vue?e1ae","webpack:///./src/components/device/device.js","webpack:///./src/components/device/device.js?2828","webpack:///./src/components/device/index.vue?42ed","webpack:///./src/components/device/device.scss?10fa","webpack:///./src/components/device/index.vue?d9ba","webpack:///./src/api/launcher.js","webpack:///./src/components/device/remote.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","style","_t","staticRenderFns","autoResizeHandler","tidyUpAnimations","reflowHandler","reflow","isScrollBarVisibilityChange","calculate","getOptions","verticalLineProcessor","horizontalLineProcessor","getLeft","sum","getRects","applyRects","setTransform","clearTransform","getTransitionEndEvent","getArrayFillWith","addClass","removeClass","hasClass","attr","on","off","component","module","exports","directives","name","rawName","value","expression","viewMode","ref","attrs","selectNode","onNodeDoubleClick","dropNode","scopedSlots","_u","key","fn","node","_v","_s","title","data","dummy","$t","isExpanded","favorate","all","self","model","callback","$$v","nodes","_e","class","slot","AppState","isMobile","groupDialogOpen","v","removeSelectedDevice","$route","params","groupPk","upperGroup","childGroup","_l","child","pk","groupCount","usage","limit","page","devicesOnIconPage","length","cardSize","sizes","current","lineGap","dev","i","alive","approval","$event","preventDefault","showIconContextMenu","Path","openModal","disable_filetransfer","showLiveView","perm","alias","dev_os_id","filters","osOptions","text","approvalStatus","page_icon","perOptions","$set","os","agent","staticStyle","total","per","isStandalone","groupName","keyOptions","setFilterKey2","includes","type","indexOf","_k","keyCode","setFilterValue","filterPreValue","statusOptions","isBusy","fetchList","networkType","setViewMode","excelLoaded","downloadExcel","selectedCount","editDeviceName","opt","setFilterKey","alertOptions","devicesOnPage","height","dimmed","thumbnailViewDrag","timestamp","imageError","imageLoaded","device_group_name","CSRemoteControl","devicePk","query","isCorporate","useFunction","showWOLList","tableClass","devices","mobileFields","fields","sortBy","sortDesc","showContextMenu","sortChange","isIndeterminate","selectAllRows","isCheckAll","setFavorate","item","active","row","updateSelectedCount","openDropDown","closeDropDown","viewDetail","removeDevice","warningModal","last_connected_time","_f","memo","wait","valueChange","showTooltipHandler","hideTooltipHandler","device_group_fk","showTooltip","formattedGroupName","resetSelectedCount","groupDialog","groupNodesMoveList","setDevGroup","show","licenseDialog","domProps","summary","items","expDate","expVol","vol","devicelist","$emit","wol","device","access","accessComplate","isRoot","onMousemoveHandler","onMouseleaveHandler","onDragendHandler","nodeInd","isSelected","visibility","cursorPosition","pathStr","placement","isLeaf","onNodeMousedownHandler","onNodeMouseupHandler","emitNodeContextmenu","emitNodeDblclick","emitNodeClick","onExternalDragoverHandler","onExternalDropHandler","gapInd","level","showBranches","isLastChild","String","fromCharCode","children","allowMultiselect","edgeSize","selectionTitle","props","Array","default","Number","Boolean","parentInd","multiselectKey","validator","allowedKeys","multiselectKeys","isArray","filter","keyName","scrollAreaHeight","maxScrollSpeed","rootCursorPosition","scrollIntervalId","scrollSpeed","lastSelectedNode","mouseIsDown","isDragging","lastMousePos","x","y","preventDrag","currentValue","draginfoTitle","mounted","document","addEventListener","onDocumentMouseupHandler","beforeDestroy","removeEventListener","watch","newValue","computed","getParent","nodeModels","copy","getNodes","gaps","push","selectionSize","getSelected","temp","dragSize","getDraggable","methods","setCursorPosition","pos","parentPath","isVisible","map","nodeModel","ind","nodePath","concat","getNode","path","siblings","slice","getNodeSiblings","isDraggable","isSelectable","JSON","stringify","isFirstChild","emitInput","getRoot","emitSelect","selectedNodes","event","emitDrop","draggingNodes","position","emitToggle","toggledNode","root","getCursorPositionFromCoords","clientX","clientY","select","addToSelection","multiselectKeyIsPressed","find","selectedNode","newNodes","shiftSelectionMode","shiftKey","shiftSelectionStarted","traverse","onToggleHandler","initialDraggingState","isDragStarted","$root","$el","rootRect","getBoundingClientRect","$dragInfo","$refs","dragInfo","dragInfoTop","top","scrollTop","marginBottom","dragInfoLeft","left","destNode","draggableNodes","scrollBottomLine","bottom","scrollDownSpeed","scrollTopLine","scrollTopSpeed","startScroll","stopScroll","$target","elementFromPoint","$nodeItem","getAttribute","closest","parse","nodeHeight","offsetHeight","offsetY","getLastNode","getFirstNode","getNodeEl","querySelector","lastNode","getNextNode","resultNode","comparePaths","getPrevNode","prevNodes","path1","path2","button","speed","setInterval","clearInterval","targetNode","draggingNode","stopDrag","checkNodeIsParent","nodeModelsToInsert","sourceSiblings","draggingNodeModel","destSiblings","destNodeModel","unshift","insertInd","splice","traverseModels","_markToDelete","updateNode","stopPropagation","$parent","patch","Object","assign","cb","shouldStop","itemPath","remove","paths","pathsStr","sourceNode","destPath","entity","s_pub_ip","s_pri_ip","sendWOLSignal","close","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread2","target","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","configurable","writable","_extends","hasOwnProperty","call","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","version","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","nodeType","parentNode","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","replace","css","prop","val","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","elRect","right","width","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","options","includeDragEl","currentChild","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","indexOfObject","arr","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","extend","dst","src","isRectEqual","rect1","rect2","Math","round","throttle","ms","args","_this","setTimeout","cancelThrottle","clearTimeout","scrollBy","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","rect","fromRect","thisAnimationDuration","childMatrix","f","e","addAnimationState","removeAnimationState","animateAll","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","easing","animated","offsetWidth","sqrt","pow","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","p","pluginName","pluginEvent","eventName","sortable","evt","eventCanceled","cancel","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","dispatchEvent","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","pullMode","lastPutMode","undefined","allEventProperties","_excluded","bind","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","some","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","put","revertClone","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","get","_globalDragOver","dropEffect","_onMove","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_ghostIsFirst","spacer","_ghostIsLast","_getSwapDirection","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_generateId","str","href","charCodeAt","_saveInputCheckedState","inputs","idx","checked","_nextTick","_cancelNextTick","id","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","isContentEditable","criteria","trim","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","inserted","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","changed","firstChild","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","removeChild","save","handleEvent","toArray","order","useAnimation","set","destroy","querySelectorAll","removeAttribute","utils","is","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","AutoScrollPlugin","AutoScroll","scroll","forceAutoScrollFallback","scrollSensitivity","bubbleScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","_ref2","dragOverBubble","drop","clearPointerElemChangedInterval","clearAutoScrolls","nulling","autoScroll","ogElemScroller","newElem","pid","isFallback","scrollCustomFn","sens","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref3","_ref4","parentSortable","validate","composing","edit","submit","deviceMemo","size","headerClass","step","$options","nl2br","functionSet","public_place_alert","next","contract","content","storeKey","lastViewMode","hasAttr","o","components","Sidebar","Waterfall","WaterfallSlot","LiveviewDialog","WOLDialog","SlVueTree","DeviceMemo","DialogAccess","handler","route","treeApi","sideTree","_isSelected","pop","isEqual","Vue","immediate","result","_rowVariant","_ext","getExt","ip","offset","onPage","isRemovableGroup","grouplist","flag_df_group","selectedGroup","group_fk","groupDeviceCount","deviceCount","created","EventBus","$on","simpleMode","handleMouseClick","showMenu","checkFields","fetchGroup","timer","expandedList","$off","lang","$i18n","locale","groupNodes","editModeCheckboxState","nodeTitle","sidebarTargetNode","menuIndex","remote","transfer","approve","detail","live","process","update","restart","delete","reboot","shutdown","contextMenuItems","action","status","showIconMenu","selectedItem","menuPosition","minLineGap","maxLineGap","label","thClass","tdClass","thStyle","minWidth","groupLoad","liveView","download","processData","process_fields","showDuplication","$log","by","device_group_pk","search_mode","network_type","axios","MyDevicesAPI","FavorateAPI","then","spread","favs","objects","aliasNew","memoNew","groups_flag","groups","each","dev_pk","setNodes","calcLicense","DeviceListAPI","DeviceGroupAPI","res","groupTmp","groupPermFilter","fetchExcel","form","method","input","language","alert","message","excel_doc_title","list2","join_all_favorite","excelParams","Error","GetMgridAPI","excelParams_for_download","api","pagename","mgrid","downloaded_excel_data_form","A","B","filteredData","itemA","j","itemB","originalLocale","output","obj2","fromEntries","entries","nullcheck","image","favnum","resp","favorite","post","servernum","getAlive","getOS","$nextTick","mode","isIconView","context","withoutInput","color","guid","liveViewChange","$router","selects","checkbox","isApplication","url","mobile","ua","descName","buttons","rm","$awn","success","open","security_agreement","addGroup","companyKey","user","company_fk","root_group_fk","placeholder","flag_confirm","overlap","has_permission","removeGroup","setCardItemSize","backToParent","selected","getFavorate","devs","cloneDeep","addParent","fk","exist","error","getProcessData","zip","prcss_name","prcss_cpu_usage","prcss_memory_usage","values","zipObject","memory_uses","memory_usage","memory_capacity","hdd_uses","hdd_usage","hdd_capacity","oldAlias","updatedAt","updateRow","requestType","historyParams","act_name_id","act_type_id","device_pk","member_pk","new_value","old_value","history","deleteAction","goback","Promise","resolve","count","warning","treeView","request_type","device_fk","old_group_fk","errorCheck","catch","response","debug","devpk","pdev","devn","updateMemo","modifyInformation","textarea","nullable","ev","toLowerCase","dest","findIndex","license","lastestExpireDateString","resultGroups","dpk","gpk","isDefaultGroup","isAdmin","onlyGroups","setParent","ppk","g","currentPk","treePath","search","counter","isDevice","scopedDev","searchOnlyGroup","findNameByPk","dataList","buildFullNames","fullName","currentFk","parentName","parentItem","permission_flag","submitParams","approver_pk","approver_name","post_approval","start_time","end_time","approval_reason","manager_device_pk","ApprovalsAPI","updateAgent","current_ver","dev_ver","latest_ver","RemoteAPI","draggableTable","sorTableDrag","deviceTableBody","createSortable","thumbEl","currentTarget","sortableEl","dragenterHandler","sidebarDragTarget","isTargetInside","dragleaveHandler","relatedTarget","dragoverHandler","dropHandler","onChoose","onEnd","addDevToGroup","new_device_group_fk","old_device_group_fk","getGroupName","computedItems","menu","pageY","pageX","CSFileManager","handleContextMenu","remoteSessionAPI","CreateInstance","versionAPI","launcherAPI","sessionResp","versionResp","session","execActiveX","command","devId","kmsAddr","kmsPort","n2nAddr","n2nPort","cSharpAddr","cSharpPort","userId","rcAuth","ftAuth","inputLock","adminAuth","userName","token","deviceName","osType","domain","noActiveX","now","pivot","serverNum","usr","browser","serv","launcherLink","click","maxTouchPoints","connection","kms_addr","kms_port","webkit","messageHandlers","observe","postMessage","Logger","w","h","dualScreenLeft","screenLeft","screenX","dualScreenTop","screenTop","screenY","screen","systemZoom","availWidth","b64","btoa","encodeURIComponent","nw","focus","AndroidViewerApp","setMessage","LauncherAPI","rc_auth","ft_auth","input_lock","admin_auth","user_name","n2nserver","n2nport","csharp_api_addr","csharp_api_port","device_name"],"mappings":"2IAAA,yBAAoY,EAAG,G,6DCAvY,yBAA+X,EAAG,G,oCCAlY,yBAA6a,EAAG,G,oCCAhb,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,gBAAgBC,MAAOP,EAAS,OAAG,CAACA,EAAIQ,GAAG,YAAY,IACzKC,EAAkB,GCctB,iBAEA,GACA,OACA,YACA,YAEA,UACA,YACA,oCAEA,OACA,eACA,oEAEA,MACA,YACA,oDAEA,SACA,YACA,oCAEA,YACA,oCAEA,YACA,oCAEA,gBACA,oCAEA,aACA,YAEA,MACA,kDAEA,OACA,+BAGA,uBACA,OACA,UACA,aAEA,aAEA,SACA,gBACA,oBACA,UAEA,8BACA,qBACA,8BACA,qBAEA,+BACA,QACA,OACA,UACA,aACA,aACA,iBACA,cACA,UACA,oBACA,wCAEA,mBACA,iDACA,qBACA,yCAEA,yBACA,2BACA,uBAIA,SAASC,EAAT,IACA,uBAGA,yCAFA,yCAMA,SAASC,EAAT,GACA,eACA,OACA,GACA,OAIA,SAASC,IACT,yBACA,iDAGA,SAASC,IAAT,WACA,aACA,2BACA,wDACA,gDACA,gDACA,4BACA,uBACA,YACA,sBAEA,0BACA,oBACA,wBACA,IAGA,SAASC,EAAT,KACA,yBAGA,SAASC,EAAT,OACA,WACA,mBACA,qBAGA,SAASC,EAAT,GACA,2CACA,OACA,iEACA,2CACA,mBACA,gDACA,aACA,+CACA,4BACA,kDAIA,IAAIC,EAAwB,WAE5B,oBACA,wBACA,SACA,IACA,OACA,OACA,eACA,yBACA,uDACA,qBACA,OACA,WACA,0CACA,UACA,8CACA,sBAEA,2CAGA,gBACA,IACA,EADA,cAEA,uBACA,IACA,+BACA,CACA,uBACA,uBACA,OACA,OACA,MACA,gBACA,OACA,GACA,MACA,OACA,GACA,UACA,QAEA,MACA,gBAEA,QACA,+BACA,4BAGA,OACA,aACA,QACA,uBAIA,gBACA,WACA,OACA,yCACA,eACA,QAIA,OACA,aApE4B,GAyExBC,EAA0B,WAE9B,oBACA,wBACA,WACA,IACA,IACA,WAEA,IADA,IACA,IADA,aACA,sBACA,SACA,SACA,QACA,gBACA,kCACA,kBACA,WAEA,WACA,YAEA,sBAGA,oBACA,yBACA,kBACA,eACA,eACA,WACA,WACA,UAKA,OAJA,cACA,+BACA,4BAEA,CACA,oBACA,cACA,UAIA,oBAEA,IADA,QACA,6BACA,4BACA,IAEA,SAGA,sBAEA,IADA,QACA,gBACA,aACA,8BAEA,oBACA,mCACA,KACA,OACA,2BACA,QACA,QACA,UAGA,oCACA,OACA,SACA,QACA,oBACA,UAKA,kBACA,kCACA,cAEA,mBAIA,OACA,aAvF8B,GA4F9B,SAASC,EAAT,OACA,UACA,YACA,WACA,aACA,cACA,QACA,UAIA,SAASC,EAAT,GACA,6CAGA,SAAS,EAAT,KACA,kDACA,OACA,OACA,WACA,yBACA,sBACA,uBAEA,0BACA,uBACA,sBACA,aAIA,SAASC,EAAT,GACA,8CAGA,SAASC,EAAT,KACA,yBACA,sBAEA,aADA,eACA,EACA,kBAKA,SAASC,EAAT,OACA,oBACA,cACA,kBACA,oBACA,kBACA,wGACA,gCAGA,SAASC,EAAT,GACA,6CACA,8BAGA,SAASC,IACT,WACA,iCACA,iCACA,IACA,sBACA,gBACA,SAOA,SAASC,EAAT,KAGA,IAFA,wEACA,KACA,YACA,SAEA,SAGA,SAASC,EAAT,KACA,YACA,0BACA,mBACA,gBAIA,SAASC,EAAT,KACA,4CACA,qCACA,eAGA,SAASC,EAAT,KACA,oDAGA,SAASC,EAAT,OACA,0BAGA,6BAFA,oBAMA,SAASC,EAAT,qEACA,0BAGA,SAASC,EAAT,qEACA,6BCtbkR,Q,wBCQ9QC,EAAY,eACd,EACAlC,EACAU,GACA,EACA,KACA,KACA,MAIa,OAAAwB,E,gCCnBfC,EAAOC,QAAU,IAA0B,wC,oCCA3C,yBAA4b,EAAG,G,oCCA/b,yBAAsjB,EAAG,G,oCCAzjB,IAAIpC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MA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","file":"static/js/chunk-7f4846dd.72218352.js","sourcesContent":["import mod from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../css-loader/index.js??ref--5-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--5-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall-slot.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../css-loader/index.js??ref--5-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--5-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall-slot.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../css-loader/index.js??ref--5-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--5-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../css-loader/index.js??ref--5-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--5-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!./sl-vue-tree-dark.scss?vue&type=style&index=1&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!./sl-vue-tree-dark.scss?vue&type=style&index=1&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vue-waterfall\",style:(_vm.style)},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--11-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--11-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./waterfall.vue?vue&type=template&id=2353f8c4&\"\nimport script from \"./waterfall.vue?vue&type=script&lang=js&\"\nexport * from \"./waterfall.vue?vue&type=script&lang=js&\"\nimport style0 from \"./waterfall.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"static/img/refresh-icon.100f6d5d.svg\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!./dialogs.scss?vue&type=style&index=0&id=4b8e3d4e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!./dialogs.scss?vue&type=style&index=0&id=4b8e3d4e&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deviceMemo.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deviceMemo.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShow),expression:\"isShow\"}],staticClass:\"vue-waterfall-slot\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n \n
\n\n\n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--11-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall-slot.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--11-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./waterfall-slot.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./waterfall-slot.vue?vue&type=template&id=7574680f&\"\nimport script from \"./waterfall-slot.vue?vue&type=script&lang=js&\"\nexport * from \"./waterfall-slot.vue?vue&type=script&lang=js&\"\nimport style0 from \"./waterfall-slot.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dialogAccess.vue?vue&type=style&index=0&id=35f94e5f&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dialogAccess.vue?vue&type=style&index=0&id=35f94e5f&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.viewMode === 'table' || _vm.viewMode === 'live')?_c('sidebar',{staticClass:\"sidebar-device\"},[_c('sl-vue-tree',{ref:\"sideTree\",staticClass:\"sidebar-tree\",attrs:{\"allowMultiselect\":false},on:{\"select\":_vm.selectNode,\"nodedblclick\":_vm.onNodeDoubleClick,\"drop\":_vm.dropNode},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\nvar node = ref.node;\nreturn [(node.isLeaf)?[_c('span',[_vm._v(_vm._s(node.title))])]:[_vm._v(_vm._s(node.data.dummy ? _vm.$t(node.title) : ((node.title) + \" (\" + (node.data.device_count) + \")\")))]]}},{key:\"toggle\",fn:function(ref){\nvar node = ref.node;\nreturn [(!node.isExpanded && !node.data.favorate && !node.data.all && !node.data.self)?_c('icon',{attrs:{\"name\":\"caret-right\"}}):(node.isExpanded)?_c('icon',{attrs:{\"name\":\"caret-down\"}}):_c('span')]}}],null,false,3042257467),model:{value:(_vm.nodes),callback:function ($$v) {_vm.nodes=$$v},expression:\"nodes\"}})],1):_vm._e(),(_vm.viewMode === 'card')?_c('div',{staticClass:\"lmm-content-body-icon-view\"},[_c('div',{staticClass:\"lmm-content-body-padded\"}),_c('b-container',{staticClass:\"devices\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('b-card',{staticClass:\"w-100\",class:(\"layout-\" + _vm.viewMode),attrs:{\"no-body\":\"\"}},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"d-flex justify-content-between\"},[(!_vm.AppState.isMobile)?[(_vm.viewMode === 'edit')?_c('div',[_c('b-button-group',{staticClass:\"mx-1\",attrs:{\"size\":\"sm\"}},[_c('b-btn',{on:{\"click\":_vm.groupDialogOpen}},[_vm._v(_vm._s(_vm.$t('move-group-n', {v: _vm.$t('selected') + ' ' + _vm.$t('device')} )))])],1),_c('b-btn',{attrs:{\"size\":\"sm\",\"variant\":\"danger\"},on:{\"click\":_vm.removeSelectedDevice}},[_vm._v(_vm._s(_vm.$t('delete-n', {v: _vm.$t('selected') + ' ' + _vm.$t('device')} )))])],1):_vm._e()]:_vm._e()],2)]),(_vm.$route.params.groupPk !== 'all')?_c('h6',{staticClass:\"device-group-nav\"},[_c('b-container',{staticClass:\"mt-2\",attrs:{\"fluid\":\"\"}},[(_vm.upperGroup)?_c('b-badge',{staticClass:\"mr-2\",attrs:{\"variant\":\"info\",\"to\":{params: {groupPk: _vm.upperGroup}}}},[_c('icon',{attrs:{\"name\":\"level-up-alt\"}}),_c('span',{staticClass:\"device-group-nav-item\"},[_vm._v(_vm._s(_vm.$t('upper_group')))])],1):_c('b-badge',{staticClass:\"mr-2\",attrs:{\"variant\":\"info\",\"to\":{params: {groupPk: 'all'}}}},[_c('icon',{attrs:{\"name\":\"level-up-alt\"}}),_c('span',{staticClass:\"device-group-nav-item\"},[_vm._v(_vm._s(_vm.$t('all_device')))])],1),(_vm.childGroup.length)?_c('span',{staticClass:\"device-group-nav-divider\"},[_vm._v(\"|\")]):_vm._e(),_vm._l((_vm.childGroup),function(child){return _c('b-badge',{key:child.pk,staticClass:\"ml-2\",attrs:{\"to\":{params: {groupPk: child.pk}},\"variant\":\"info\"}},[_c('icon',{attrs:{\"name\":\"regular/folder\"}}),_c('span',{staticClass:\"device-group-nav-item\"},[_vm._v(_vm._s(child.name))])],1)}),_c('div',{staticClass:\"group-count\"},[_c('span',[_vm._v(_vm._s(_vm.groupCount.usage))]),(_vm.groupCount.limit)?_c('span',[_vm._v(\" / \"+_vm._s(_vm.groupCount.limit))]):_vm._e()])],2)],1):_vm._e(),_c('div',{staticClass:\"devices-body\"},[_c('b-container',{staticClass:\"mt-4\"},[_c('waterfall',{attrs:{\"line-gap\":350,\"min-line-gap\":350,\"max-line-gap\":440,\"watch\":_vm.page,\"align\":\"center\"}},[(!_vm.devicesOnIconPage.length)?_c('waterfall-slot',{attrs:{\"width\":_vm.cardSize.sizes[_vm.cardSize.current].lineGap,\"height\":100}},[_c('div',{staticClass:\"card-view-empty\"},[_vm._v(_vm._s(_vm.$t('no-agent')))])]):_vm._e(),_vm._l((_vm.devicesOnIconPage),function(dev,i){return _c('waterfall-slot',{key:dev.pk,staticClass:\"card-view-item-wrap\",attrs:{\"move-class\":\"item-move\",\"width\":200,\"height\":140,\"order\":i}},[(dev.alive === 1 && dev.approval === 1)?_c('div',{staticClass:\"card-view-item\",on:{\"contextmenu\":function($event){$event.preventDefault();return _vm.showIconContextMenu(dev)}}},[_c('div',{staticClass:\"card-view-header d-flex icon-menu-button\"},[_c('b-dropdown',{staticClass:\"icon-menu-dropdown\",attrs:{\"right\":\"\",\"no-caret\":\"\",\"variant\":\"none\"}},[_c('template',{slot:\"button-content\"},[_c('img',{staticClass:\"icon-view-image-on\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/on_hover_menu.svg\")}})]),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('remote', dev)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.normal.title')))])]),(!_vm.AppState.isMobile && !dev.disable_filetransfer)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('transfer', dev)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.transfer.title')))])]):_vm._e(),_c('b-popover',{attrs:{\"target\":\"view-detail-item2\",\"placement\":\"right\"}},[_c('template',{slot:\"title\"})],2),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.showLiveView(dev)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.preview.title')))])]),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('restart', dev)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.restart.title')))])]),(_vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('reboot', dev)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.reboot.title')))])]):_vm._e(),(_vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('shutdown', dev)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.shutdown.title')))])]):_vm._e()],2)],1),_c('div',{staticClass:\"card-view-title icon-view-access\"},[_vm._v(_vm._s(dev.alias))]),_c('div',{staticClass:\"card-view-actions d-flex justify-content-center\"},[_c('b-button',{attrs:{\"variant\":\"link\"},on:{\"click\":function($event){return _vm.openModal('remote', dev)}}},[(dev.dev_os_id === 1)?_c('img',{staticClass:\"icon-view-image-os-on\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/on_none_windows.svg\")}}):(dev.dev_os_id === 3)?_c('img',{staticClass:\"icon-view-image-os-on\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/on_none_ios.svg\")}}):(dev.dev_os_id === 4)?_c('img',{staticClass:\"icon-view-image-os-on\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/on_none_android.svg\")}}):_vm._e()])],1),_c('div',{staticClass:\"card-view-footer d-flex justify-content-between\"},[(dev.dev_os_id === 1)?_c('div',{staticClass:\"icon-view-access\"},[_vm._v(_vm._s(_vm.filters.osOptions[1].text))]):_vm._e(),(dev.dev_os_id === 2)?_c('div',{staticClass:\"icon-view-access\"},[_vm._v(_vm._s(_vm.filters.osOptions[2].text))]):_vm._e(),(dev.dev_os_id === 3)?_c('div',{staticClass:\"icon-view-access\"},[_vm._v(_vm._s(_vm.filters.osOptions[3].text))]):_vm._e(),(dev.dev_os_id === 4)?_c('div',{staticClass:\"icon-view-access\"},[_vm._v(_vm._s(_vm.filters.osOptions[4].text))]):_vm._e(),_c('div',{staticClass:\"card-view-action\"},[_c('span',{staticClass:\"icon-view-access\"},[_vm._v(\"ON\")])])])]):(dev.alive === 1 && dev.approval === 0)?_c('div',{staticClass:\"card-view-item\",on:{\"contextmenu\":function($event){$event.preventDefault();return _vm.showIconContextMenu(dev)}}},[_c('div',{staticClass:\"card-view-header d-flex icon-menu-button\"},[_c('b-dropdown',{attrs:{\"right\":\"\",\"no-caret\":\"\",\"variant\":\"none\"}},[_c('template',{slot:\"button-content\"},[_c('img',{staticClass:\"icon-view-image\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/off_none_menu.svg\")}})]),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.approvalStatus(dev)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.approve.desc')))])])],2)],1),_c('div',{staticClass:\"card-view-title icon-view-offline\"},[_vm._v(_vm._s(dev.alias))]),_c('div',{staticClass:\"card-view-actions d-flex justify-content-center\"},[(dev.dev_os_id === 1)?_c('img',{staticClass:\"icon-view-image-os\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/off_none_windows.svg\")}}):(dev.dev_os_id === 3)?_c('img',{staticClass:\"icon-view-image-os\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/off_none_ios.svg\")}}):(dev.dev_os_id === 4)?_c('img',{staticClass:\"icon-view-image-os\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/off_none_android.svg\")}}):_vm._e()]),_c('div',{staticClass:\"card-view-footer d-flex justify-content-between\"},[(dev.dev_os_id === 1)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[1].text))]):_vm._e(),(dev.dev_os_id === 2)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[2].text))]):_vm._e(),(dev.dev_os_id === 3)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[3].text))]):_vm._e(),(dev.dev_os_id === 4)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[4].text))]):_vm._e(),_c('div',{staticClass:\"card-view-action\"},[_c('span',{staticClass:\"icon-view-online\"},[_vm._v(\"NO ACCESS\")])])])]):_c('div',{staticClass:\"card-view-item\",on:{\"contextmenu\":function($event){$event.preventDefault();return _vm.showIconContextMenu(dev)}}},[_c('div',{staticClass:\"card-view-header d-flex icon-menu-button\"}),_c('div',{staticClass:\"card-view-title icon-view-offline\"},[_vm._v(_vm._s(dev.alias))]),_c('div',{staticClass:\"card-view-actions d-flex justify-content-center\"},[_c('b-button',{attrs:{\"variant\":\"link\"},on:{\"click\":function($event){return _vm.openModal('remote', dev)}}},[(dev.dev_os_id === 1)?_c('img',{staticClass:\"icon-view-image-os\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/off_none_windows.svg\")}}):(dev.dev_os_id === 3)?_c('img',{staticClass:\"icon-view-image-os\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/off_none_ios.svg\")}}):(dev.dev_os_id === 4)?_c('img',{staticClass:\"icon-view-image-os\",attrs:{\"src\":((_vm.AppState.Path.image) + \"/simple/off_none_android.svg\")}}):_vm._e()])],1),_c('div',{staticClass:\"card-view-footer d-flex justify-content-between\"},[(dev.dev_os_id === 1)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[1].text))]):_vm._e(),(dev.dev_os_id === 2)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[2].text))]):_vm._e(),(dev.dev_os_id === 3)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[3].text))]):_vm._e(),(dev.dev_os_id === 4)?_c('div',{staticClass:\"icon-view-offline\"},[_vm._v(_vm._s(_vm.filters.osOptions[4].text))]):_vm._e(),_c('div',{staticClass:\"card-view-action\"},[_c('span',{staticClass:\"icon-view-offline\"},[_vm._v(\"OFF\")])])])])])})],2)],1)],1),_c('div',{staticClass:\"d-flex justify-content-between\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('div',[_c('b-form-select',{attrs:{\"size\":\"sm\",\"options\":_vm.page_icon.perOptions},model:{value:(_vm.page_icon.per),callback:function ($$v) {_vm.$set(_vm.page_icon, \"per\", $$v)},expression:\"page_icon.per\"}})],1),_c('div',{staticClass:\"add-device-button\"},[(_vm.AppState.os === 'Windows')?_c('b-link',{attrs:{\"target\":\"_blank\",\"href\":(_vm.agent + \"/linkmeminese_windows_agent_setup.exe\"),\"download\":\"\"}},[_c('icon',{staticClass:\"sh-icon\",staticStyle:{\"margin\":\"0 4px 2px 0\"},attrs:{\"name\":\"plus-circle\"}}),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('first-add-device')))])],1):_c('b-link',{attrs:{\"target\":\"_blank\",\"href\":(_vm.agent + \"/linkmemine_mac_agent_setup.zip\"),\"download\":\"\"}},[_c('icon',{staticClass:\"sh-icon\",staticStyle:{\"margin\":\"0 4px 2px 0\"},attrs:{\"name\":\"plus-circle\"}}),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('first-add-device')))])],1)],1),_c('b-pagination',{staticClass:\"my-0 float-right\",attrs:{\"size\":\"sm\",\"total-rows\":_vm.page_icon.total,\"per-page\":_vm.page_icon.per},model:{value:(_vm.page_icon.current),callback:function ($$v) {_vm.$set(_vm.page_icon, \"current\", $$v)},expression:\"page_icon.current\"}})],1)])],1)])],1):(_vm.viewMode === 'table' || _vm.viewMode === 'live')?_c('div',{staticClass:\"lmm-content-body\"},[_c('div',{staticClass:\"lmm-content-body-padded\"},[(!_vm.AppState.isStandalone)?_c('b-container',{staticClass:\"d-flex justify-content-between\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"device-header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[(this.$route.params.groupPk === 'all')?_c('span',[_vm._v(_vm._s(_vm.$t('all_device'))+\" (\"+_vm._s(_vm.page.total)+\")\")]):(this.$route.params.groupPk === 'favorate')?_c('span',[_vm._v(_vm._s(_vm.$t('favorate'))+\" (\"+_vm._s(_vm.page.total)+\")\")]):(this.$route.params.groupPk === 'self')?_c('span',[_vm._v(_vm._s(_vm.$t('user_registered_agent'))+\" (\"+_vm._s(_vm.page.total)+\")\")]):_c('span',[_vm._v(_vm._s(_vm.groupName)+\" (\"+_vm._s(_vm.page.total)+\")\")])])])]):_vm._e(),_c('b-container',{attrs:{\"fluid\":\"\"}},[(!_vm.AppState.isMobile)?_c('b-row',{staticClass:\"search-form no-rule\"},[_c('b-col',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('b-form-select',{staticClass:\"mr-2\",staticStyle:{\"width\":\"150px\"},attrs:{\"options\":_vm.filters.keyOptions,\"size\":\"sm\"},on:{\"change\":_vm.setFilterKey2},model:{value:(_vm.filters.val),callback:function ($$v) {_vm.$set(_vm.filters, \"val\", $$v)},expression:\"filters.val\"}}),(['alias', 'device_group_name', 'memo', 'ip'].includes(_vm.filters.key.value))?_c('b-form-input',{attrs:{\"size\":\"sm\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilterValue($event)}},model:{value:(_vm.filterPreValue),callback:function ($$v) {_vm.filterPreValue=$$v},expression:\"filterPreValue\"}}):(_vm.filters.key.value === 'dev_os_id')?_c('b-form-select',{attrs:{\"options\":_vm.filters.osOptions,\"size\":\"sm\"},model:{value:(_vm.filterPreValue),callback:function ($$v) {_vm.filterPreValue=$$v},expression:\"filterPreValue\"}}):(_vm.filters.key.value === 'alive')?_c('b-form-select',{attrs:{\"options\":_vm.filters.statusOptions,\"size\":\"sm\"},model:{value:(_vm.filterPreValue),callback:function ($$v) {_vm.filterPreValue=$$v},expression:\"filterPreValue\"}}):_vm._e(),_c('b-btn',{staticClass:\"ml-2\",attrs:{\"size\":\"sm\",\"variant\":\"secondary\"},on:{\"click\":_vm.setFilterValue}},[_vm._v(_vm._s(_vm.$t('search')))])],1)]),_c('b-col',{staticClass:\"right-btns\"},[(!_vm.AppState.isMobile)?[_c('div',{staticClass:\"text-right pl-3 text-nowrap\"},[(!_vm.AppState.isMobile)?_c('div'):_vm._e(),_vm._v(\" \"),_c('b-btn',{staticClass:\"mx-2 refresh-btn\",attrs:{\"size\":\"sm\",\"disabled\":_vm.isBusy},on:{\"click\":_vm.fetchList}},[_c('img',{attrs:{\"src\":require(\"../../assets/refresh-icon.svg\")}})]),(_vm.networkType.indexOf('e') === 0)?_c('b-btn',{staticClass:\"view-mode-button\",attrs:{\"size\":\"sm\",\"pressed\":_vm.viewMode === 'table',\"disabled\":_vm.viewMode === 'edit'},on:{\"click\":function($event){return _vm.setViewMode('table')}}},[_c('icon',{attrs:{\"name\":\"bars\"}}),_c('span',{staticClass:\"d-none d-xl-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.$t('list-view')))])],1):_vm._e(),(_vm.networkType.indexOf('e') === 0)?_c('b-btn',{staticClass:\"view-mode-button mx-2\",attrs:{\"size\":\"sm\",\"pressed\":_vm.viewMode === 'live',\"disabled\":_vm.viewMode === 'edit'},on:{\"click\":function($event){return _vm.setViewMode('live')}}},[_c('icon',{attrs:{\"name\":\"eye\"}}),_c('span',{staticClass:\"d-none d-xl-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.$t('live-view')))])],1):_vm._e(),_c('b-btn',{staticClass:\"view-mode-button\",attrs:{\"size\":\"sm\",\"disabled\":_vm.excelLoaded},on:{\"click\":_vm.downloadExcel}},[_c('img',{staticClass:\"mr-1\",staticStyle:{\"height\":\"0.9rem\",\"vertical-align\":\"middle\"},attrs:{\"src\":((_vm.AppState.Path.image) + \"/icons/excel-icon.svg\")}}),(!_vm.excelLoaded)?_c('span',[_vm._v(_vm._s(_vm.$t('excel_button')))]):_c('span',[_vm._v(\"Download...\")])]),(_vm.networkType.indexOf('i') === 0)?_c('b-dropdown',{staticClass:\"view-mode-button ml-2 mr-0\",attrs:{\"right\":\"\",\"variant\":\"primary\",\"size\":\"sm\",\"text\":_vm.$t('columns.actions')}},[(this.selectedCount > 0)?_c('b-dropdown-item',{on:{\"click\":_vm.groupDialogOpen}},[_c('span',[_vm._v(_vm._s(_vm.$t('move-group-n')))])]):_vm._e(),(this.selectedCount === 1)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.editDeviceName(null)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('device_name_edit')))])]):_vm._e(),(this.selectedCount > 0)?_c('b-dropdown-item',{on:{\"click\":_vm.removeSelectedDevice}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.delete.title')))])]):_vm._e(),(this.selectedCount === 0)?_c('b-dropdown-item',{attrs:{\"disabled\":true}},[_c('span',[_vm._v(_vm._s(_vm.$t('no-agent-selected')))])]):_vm._e()],1):_vm._e()],1)]:_vm._e()],2)],1):_vm._e()],1),_c('b-container',{staticClass:\"devices\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row\"},[(_vm.AppState.isMobile)?_c('b-card',{staticClass:\"w-100 mt-3\",class:(\"layout-\" + _vm.viewMode),attrs:{\"no-body\":\"\"}},[[_c('div',{staticClass:\"d-flex justify-content-between\"},[_c('b-input-group',{attrs:{\"size\":\"sm\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilterValue($event)}}},[_c('template',{slot:\"prepend\"},[_c('b-dropdown',{attrs:{\"text\":_vm.$t(_vm.filters.key.text),\"size\":\"sm\"}},_vm._l((_vm.filters.keyOptions),function(opt){return _c('b-dropdown-item',{key:opt.value,on:{\"click\":function($event){return _vm.setFilterKey(opt)}}},[_vm._v(_vm._s(_vm.$t(opt.text)))])}),1)],1),(_vm.filters.key.value === 'alias')?_c('b-form-input',{model:{value:(_vm.filterPreValue),callback:function ($$v) {_vm.filterPreValue=$$v},expression:\"filterPreValue\"}}):(_vm.filters.key.value === 'dev_os_id')?_c('b-form-select',{staticClass:\"w-100\",attrs:{\"options\":_vm.filters.osOptions},model:{value:(_vm.filterPreValue),callback:function ($$v) {_vm.filterPreValue=$$v},expression:\"filterPreValue\"}}):(_vm.filters.key.value === 'alive')?_c('b-form-select',{staticClass:\"w-100\",attrs:{\"options\":_vm.filters.statusOptions},model:{value:(_vm.filterPreValue),callback:function ($$v) {_vm.filterPreValue=$$v},expression:\"filterPreValue\"}}):(_vm.filters.key.value === 'status')?_c('b-form-select',{attrs:{\"options\":_vm.filters.alertOptions},model:{value:(_vm.filterPreValue),callback:function ($$v) {_vm.filterPreValue=$$v},expression:\"filterPreValue\"}}):_vm._e(),_c('b-input-group-append',[_c('b-btn',{attrs:{\"size\":\"sm\",\"variant\":\"primary\"},on:{\"click\":_vm.setFilterValue}},[_vm._v(_vm._s(_vm.$t('search')))])],1)],2)],1),_c('div',{staticClass:\"mt-2 d-flex justify-content-between\"},[_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-btn',{staticClass:\"view-mode-button\",attrs:{\"pressed\":_vm.viewMode === 'table',\"disabled\":_vm.viewMode === 'edit'},on:{\"click\":function($event){return _vm.setViewMode('table')}}},[_c('icon',{attrs:{\"name\":\"bars\"}}),_c('span',{staticClass:\"d-none d-xl-inline-block\"},[_vm._v(_vm._s(_vm.$t('list-view')))])],1),_c('b-btn',{staticClass:\"view-mode-button\",attrs:{\"pressed\":_vm.viewMode === 'live',\"disabled\":_vm.viewMode === 'edit'},on:{\"click\":function($event){return _vm.setViewMode('live')}}},[_c('icon',{attrs:{\"name\":\"eye\"}}),_c('span',{staticClass:\"d-none d-xl-inline-block\"},[_vm._v(_vm._s(_vm.$t('live-view')))])],1)],1),_c('b-btn',{attrs:{\"size\":\"sm\",\"disabled\":_vm.isBusy},on:{\"click\":_vm.fetchList}},[_vm._v(_vm._s(_vm.$t('refresh')))])],1)]],2):_vm._e(),(_vm.viewMode === 'live')?_c('b-card',{staticClass:\"w-100\",class:(\"layout-\" + _vm.viewMode),attrs:{\"no-body\":\"\"}},[_c('b-container',{staticClass:\"my-4\"},[_c('waterfall',{attrs:{\"line-gap\":350,\"min-line-gap\":350,\"max-line-gap\":440,\"watch\":_vm.page,\"align\":\"center\"}},[(!_vm.devicesOnPage.length)?_c('waterfall-slot',{attrs:{\"width\":240,\"height\":100}},[_c('div',{staticClass:\"card-view-empty\"},[_vm._v(_vm._s(_vm.$t('no-agent')))])]):_vm._e(),_vm._l((_vm.devicesOnPage),function(dev,i){return _c('waterfall-slot',{key:dev.pk,staticClass:\"live-view-item-wrap\",attrs:{\"move-class\":\"item-move\",\"width\":240,\"height\":_vm.cardSize.sizes[_vm.cardSize.current].height,\"order\":i}},[_c('div',{staticClass:\"live-view-item\",class:{dimmed: dev.alive === 0},on:{\"mouseover\":function($event){return _vm.thumbnailViewDrag($event, dev)}}},[_c('div',{staticClass:\"live-view-thumb\",on:{\"click\":function($event){return _vm.showLiveView(dev)}}},[(dev.alive === 1)?_c('img',{attrs:{\"src\":((_vm.AppState.Path.live) + \"/\" + (dev.guid) + \".\" + (dev._ext) + \"?cache=\" + _vm.timestamp)},on:{\"error\":_vm.imageError,\"load\":_vm.imageLoaded}}):_c('img',{attrs:{\"src\":((_vm.AppState.Path.live) + \"/\" + (dev.guid) + \".\" + (dev._ext))},on:{\"error\":_vm.imageError,\"load\":_vm.imageLoaded}})]),_c('div',{staticClass:\"live-view-title\"},[_vm._v(_vm._s(dev.alias))]),_c('div',{staticClass:\"live-view-group\"},[_vm._v(_vm._s(dev.device_group_name))]),_c('div',{staticClass:\"live-view-actions d-flex flex-row-reverse\"},[_c('b-button-group',{attrs:{\"size\":\"sm\"}},[(dev.approval === 1 && dev.alive === 1)?_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\",value:(_vm.$t('remote.remote.title2')),expression:\"$t('remote.remote.title2')\"}],attrs:{\"variant\":\"primary\",\"disabled\":!_vm.AppState.perm.CSRemoteControl},on:{\"click\":function($event){return _vm.openModal('remote', dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"play\",\"scale\":\"1.2\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Remote\")])],1):_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\",value:(_vm.$t('remote.approve.desc')),expression:\"$t('remote.approve.desc')\"}],attrs:{\"variant\":\"dark\",\"disabled\":!_vm.AppState.perm.CSRemoteControl},on:{\"click\":function($event){return _vm.approvalStatus(dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"exclamation-triangle\",\"scale\":\"1.2\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Remote\")])],1),(!_vm.AppState.isMobile)?_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\",value:(_vm.$t('remote.transfer.title')),expression:\"$t('remote.transfer.title')\"}],attrs:{\"disabled\":dev.disable_filetransfer || dev.approval === 0},on:{\"click\":function($event){return _vm.openModal('transfer', dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"copy\",\"scale\":\"1.2\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Transfer\")])],1):_vm._e(),_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\",value:(_vm.$t('remote.detail.title')),expression:\"$t('remote.detail.title')\"}],attrs:{\"to\":{name: 'device-detail', params: {devicePk: dev.pk}, query: _vm.$route.query}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"search\",\"scale\":\"1.2\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Detail\")])],1)],1)],1)])])})],2)],1)],1):_vm._e(),(_vm.viewMode === 'table' && _vm.AppState.isMobile)?_c('b-card',{staticClass:\"w-100 mt-3\",class:(\"layout-\" + _vm.viewMode),attrs:{\"no-body\":\"\"}},[_c('b-list-group',_vm._l((_vm.devices),function(dev){return _c('b-list-group-item',{key:dev.pk,staticClass:\"d-flex justify-content-between align-items-center\"},[_c('div',[_c('div',[_vm._v(_vm._s(dev.alias))]),_c('div',{staticStyle:{\"color\":\"#cccccc\",\"font-size\":\"90%\"}},[_vm._v(_vm._s(dev.device_group_name))])]),_c('div',[(dev.alive === 1 && dev.approval === 1)?_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":!_vm.AppState.perm.CSRemoteControl},on:{\"click\":function($event){return _vm.openModal('remote', dev)}}},[_c('icon',{staticClass:\"mr-1 dev-action-button\",attrs:{\"name\":\"play\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.remote.title2')))])],1),_c('b-dropdown',{attrs:{\"right\":\"\",\"variant\":\"primary\"}},[_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.showLiveView(dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"camera\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.preview.title')))])],1),(!_vm.AppState.isMobile && !dev.disable_filetransfer)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('transfer', dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"copy\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.transfer.title')))])],1):_vm._e(),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('restart', dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"undo\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.restart.title')))])],1),(_vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('reboot', dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"undo\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.reboot.title')))])],1):_vm._e(),(_vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('shutdown', dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"power-off\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.shutdown.title')))])],1):_vm._e()],1)],1):(dev.alive === 1 && dev.approval === 0)?_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"variant\":\"dark\",\"disabled\":!_vm.AppState.perm.CSRemoteControl}},[_c('icon',{staticClass:\"mr-1 dev-action-button\",attrs:{\"name\":\"exclamation-triangle\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.approve.title')))])],1),_c('b-dropdown',{attrs:{\"right\":\"\",\"variant\":\"dark\"}},[_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.approvalStatus(dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"camera\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.approve.desc')))])],1)],1)],1):_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"exclamation-circle\",\"scale\":\"1.2\"}}),_vm._v(\" \"),_c('span',[_vm._v(\"OFFLINE\")])],1),_c('b-dropdown',{attrs:{\"right\":\"\"}},[_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.showLiveView(dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"camera\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.preview.title')))])],1),(_vm.AppState.isCorporate && _vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.showWOLList(dev)}}},[_c('icon',{staticClass:\"dev-action-button\",attrs:{\"name\":\"camera\",\"scale\":\"1.2\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('remote.wol.title')))])],1):_vm._e()],1)],1)],1)])}),1)],1):_vm._e(),(_vm.viewMode === 'table' && !_vm.AppState.isMobile)?_c('b-card',{staticClass:\"table-card\"},[_c('b-table',{ref:\"deviceTableBody\",class:_vm.tableClass,attrs:{\"items\":_vm.devices,\"fields\":_vm.AppState.isMobile ? _vm.mobileFields : _vm.fields,\"current-page\":_vm.page.current,\"per-page\":_vm.page.per,\"show-empty\":true,\"empty-text\":_vm.$t('no-agent'),\"tbody-class\":\"lmm-table-body\",\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc,\"stacked\":\"lg\",\"hover\":\"\",\"primary-key\":\"id\",\"responsive\":\"\"},on:{\"row-contextmenu\":_vm.showContextMenu,\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event},\"update:sortDesc\":function($event){_vm.sortDesc=$event},\"update:sort-desc\":function($event){_vm.sortDesc=$event},\"sort-changed\":_vm.sortChange},scopedSlots:_vm._u([{key:\"head(checkbox)\",fn:function(data){return [_c('b-form-checkbox',{attrs:{\"indeterminate\":_vm.isIndeterminate},on:{\"change\":_vm.selectAllRows},model:{value:(_vm.isCheckAll),callback:function ($$v) {_vm.isCheckAll=$$v},expression:\"isCheckAll\"}})]}},{key:\"cell(favorate)\",fn:function(data){return [_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"link\"},on:{\"click\":function($event){return _vm.setFavorate(data.item)}}},[_c('icon',{staticClass:\"favorate-star\",class:{active: data.value},attrs:{\"name\":\"star\"}})],1)]}},{key:\"cell(checkbox)\",fn:function(row){return [_c('b-form-checkbox',{on:{\"change\":_vm.updateSelectedCount},model:{value:(row.item.checkbox),callback:function ($$v) {_vm.$set(row.item, \"checkbox\", $$v)},expression:\"row.item.checkbox\"}})]}},{key:\"cell(alive)\",fn:function(row){return [(row.item.alive === 0)?_c('div',{staticClass:\"alive-offline\"},[_c('img',{attrs:{\"src\":((_vm.AppState.Path.image) + \"/icons/status_offline.svg\")}}),_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('icon_offline')))])]):(row.item.alive === 1)?_c('div',{staticClass:\"alive-online\"},[_c('img',{attrs:{\"src\":((_vm.AppState.Path.image) + \"/icons/status_online.svg\")}}),_c('span',{staticClass:\"online-text\"},[_vm._v(\" \"+_vm._s(_vm.$t('icon_online')))])]):_vm._e()]}},{key:\"cell(dev_os_id)\",fn:function(row){return [(row.item.dev_os_id === 1)?_c('div',[_vm._v(_vm._s(_vm.filters.osOptions[1].text))]):(row.item.dev_os_id === 2)?_c('div',[_vm._v(_vm._s(_vm.filters.osOptions[2].text))]):(row.item.dev_os_id === 3)?_c('div',[_vm._v(_vm._s(_vm.filters.osOptions[3].text))]):(row.item.dev_os_id === 4)?_c('div',[_vm._v(_vm._s(_vm.filters.osOptions[4].text))]):_c('div',[_vm._v(_vm._s('Unknown'))])]}},{key:\"cell(actions)\",fn:function(row){return [(row.item.alive === 1 && row.item.approval === 1)?_c('div',[_c('b-button-group',{staticClass:\"d-flex device-button-group\"},[_c('b-button',{staticClass:\"device-button\",staticStyle:{\"text-align\":\"left\"},attrs:{\"size\":\"sm\",\"disabled\":!_vm.AppState.perm.CSRemoteControl},on:{\"click\":function($event){return _vm.openModal('remote', row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.remote.title2')))])]),_c('b-dropdown',{attrs:{\"right\":\"\",\"size\":\"sm\",\"variant\":\"white\"},on:{\"show\":_vm.openDropDown,\"hidden\":_vm.closeDropDown}},[_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('remote', row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.normal.title')))])]),(!_vm.AppState.isMobile && !row.item.disable_filetransfer)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('transfer', row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.transfer.title')))])]):_vm._e(),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.showLiveView(row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.preview.title')))])]),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.viewDetail(row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.detail.title')))])]),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.openModal('restart', row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.restart.title')))])]),(_vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.removeDevice('logoff',row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.logoff.title')))])]):_vm._e(),(_vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.warningModal('reboot', row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.reboot.title')))])]):_vm._e(),(_vm.AppState.perm.useFunction)?_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.warningModal('shutdown', row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.shutdown.title')))])]):_vm._e()],1)],1)],1):(row.item.alive === 1 && row.item.approval === 0)?_c('div',[_c('b-button-group',{staticClass:\"d-flex device-button-group\"},[_c('b-button',{staticClass:\"device-button-offline\",staticStyle:{\"text-align\":\"left\"},attrs:{\"size\":\"sm\",\"disabled\":!_vm.AppState.perm.CSRemoteControl},on:{\"click\":function($event){return _vm.approvalStatus(row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.approve.title')))])]),_c('b-dropdown',{attrs:{\"right\":\"\",\"size\":\"sm\",\"variant\":\"white\"},on:{\"show\":_vm.openDropDown,\"hidden\":_vm.closeDropDown}},[_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.approvalStatus(row.item)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('remote.approve.desc')))])])],1)],1)],1):_c('div',[_c('b-button-group',{staticClass:\"d-flex device-button-group\"},[_c('b-button',{staticClass:\"device-button-offline\",staticStyle:{\"text-align\":\"left\"},attrs:{\"size\":\"sm\",\"disabled\":!_vm.AppState.perm.CSRemoteControl}},[_c('span',[_vm._v(_vm._s(_vm.$t('icon_offline')))])])],1)],1)]}},{key:\"cell(last_connected_time)\",fn:function(row){return [(row.item.last_connected_time === 'None')?[_vm._v(\"No Data\")]:[_vm._v(_vm._s(_vm._f(\"moment\")(row.item.last_connected_time,'YY-MM-DD HH:mm')))]]}},{key:\"cell(alias)\",fn:function(row){return [_c('div',{staticStyle:{\"cursor\":\"pointer\",\"-webkit-user-select\":\"none\",\"-moz-user-select\":\"none\",\"-ms-user-select\":\"none\",\"user-select\":\"none\"},on:{\"dblclick\":function($event){return _vm.viewDetail(row.item)}}},[_c('div',[_vm._v(_vm._s(row.item.alias))])])]}},{key:\"cell(memo)\",fn:function(row){return [_c('DeviceMemo',{attrs:{\"name\":\"memo\",\"value\":row.item.memo,\"wait\":_vm.wait,\"data\":row.item},on:{\"changed\":_vm.valueChange}})]}},{key:\"cell(groups_flag)\",fn:function(data){return [_c('div',{staticClass:\"tooltip-container\",on:{\"mouseenter\":function($event){return _vm.showTooltipHandler(data.item, true)},\"mouseleave\":function($event){return _vm.hideTooltipHandler()}}},[_c('icon',{staticClass:\"favorate-star\",class:{active: data.item.device_group_fk.length > 1},attrs:{\"name\":\"folder\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTooltip[data.item.pk]),expression:\"showTooltip[data.item.pk]\"}],staticClass:\"tooltip-box\"},[_vm._v(_vm._s(_vm.formattedGroupName(data.item)))])],1)]}}],null,false,2292387184)})],1):_vm._e(),_c('div',{staticClass:\"pagination-wrap\"},[_c('div',[_c('b-form-select',{attrs:{\"size\":\"sm\",\"options\":_vm.page.perOptions},model:{value:(_vm.page.per),callback:function ($$v) {_vm.$set(_vm.page, \"per\", $$v)},expression:\"page.per\"}})],1),_c('div',{staticClass:\"add-device-button\"},[(_vm.AppState.os === 'Windows')?_c('b-link',{attrs:{\"target\":\"_blank\",\"href\":(_vm.agent + \"/linkmeminese_windows_agent_setup.exe\"),\"download\":\"\"}},[_c('icon',{staticClass:\"sh-icon\",staticStyle:{\"margin\":\"0 4px 2px 0\"},attrs:{\"name\":\"plus-circle\"}}),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('first-add-device')))])],1):_c('b-link',{attrs:{\"target\":\"_blank\",\"href\":(_vm.agent + \"/linkmemine_mac_agent_setup.zip\"),\"download\":\"\"}},[_c('icon',{staticClass:\"sh-icon\",staticStyle:{\"margin\":\"0 4px 2px 0\"},attrs:{\"name\":\"plus-circle\"}}),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('first-add-device')))])],1)],1),_c('b-pagination',{staticClass:\"my-0 float-right\",attrs:{\"size\":\"sm\",\"total-rows\":_vm.page.total,\"per-page\":_vm.page.per},on:{\"change\":_vm.resetSelectedCount},model:{value:(_vm.page.current),callback:function ($$v) {_vm.$set(_vm.page, \"current\", $$v)},expression:\"page.current\"}})],1)],1)])],1)]):_vm._e(),_c('transition',{attrs:{\"name\":\"detail\",\"mode\":\"out-in\"}},[_c('router-view',{staticClass:\"detail-view\"})],1),_c('b-modal',{attrs:{\"header-class\":\"lmm-common-popup-header\",\"no-close-on-backdrop\":\"\"},model:{value:(_vm.groupDialog.show),callback:function ($$v) {_vm.$set(_vm.groupDialog, \"show\", $$v)},expression:\"groupDialog.show\"}},[_c('template',{slot:\"modal-header\"},[_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"../../assets/admin_main_log.svg\")}})]),_c('div',[(_vm.groupDialog.show)?_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('sl-vue-tree',{ref:\"treeView\",staticClass:\"select-group-node\",attrs:{\"allowMultiselect\":false},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\nvar node = ref.node;\nreturn [_vm._v(\" \"+_vm._s(node.title))]}},{key:\"toggle\",fn:function(ref){\nvar node = ref.node;\nreturn [(node.isExpanded)?_c('img',{attrs:{\"src\":((_vm.AppState.Path.image) + \"/icons/group_folder_open.svg\")}}):_c('img',{attrs:{\"src\":((_vm.AppState.Path.image) + \"/icons/group_folder.svg\")}})]}}],null,false,1170456135),model:{value:(_vm.groupNodesMoveList),callback:function ($$v) {_vm.groupNodesMoveList=$$v},expression:\"groupNodesMoveList\"}})],1)],1):_vm._e()],1),_c('template',{slot:\"modal-footer\"},[_c('b-btn',{attrs:{\"size\":\"sm\",\"variant\":\"success\"},on:{\"click\":_vm.setDevGroup}},[_vm._v(_vm._s(_vm.$t('submit')))]),_c('b-btn',{attrs:{\"size\":\"sm\"},on:{\"click\":function($event){_vm.groupDialog.show = false}}},[_vm._v(_vm._s(_vm.$t('cancel')))])],1)],2),_c('b-modal',{staticStyle:{\"margin\":\"1rem 2rem\"},attrs:{\"size\":\"lg\",\"header-class\":\"lmm-common-popup-header\",\"body-class\":\"license-expire\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"hide-footer\":\"\"},model:{value:(_vm.licenseDialog.show),callback:function ($$v) {_vm.$set(_vm.licenseDialog, \"show\", $$v)},expression:\"licenseDialog.show\"}},[_c('template',{staticClass:\"align-items-center\",slot:\"modal-header\"},[_c('div',[_c('h3',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t('license'))+\" \"+_vm._s(_vm.$t('expire'))+\" \"+_vm._s(_vm.$t('notify')))])])]),_c('div',[(_vm.licenseDialog.show)?_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('p',{staticClass:\"header-desc-div w-100 text-center mt-4\",domProps:{\"innerHTML\":_vm._s(_vm.$t('expired_desc'))}}),_c('b-table',{staticClass:\"mt-4\",attrs:{\"fields\":_vm.licenseDialog.summary.fields,\"items\":_vm.licenseDialog.summary.items,\"outlined\":\"\"},scopedSlots:_vm._u([{key:\"cell(expDate)\",fn:function(row){return [_vm._v(_vm._s(_vm._f(\"moment\")(row.item.expDate,'YY-MM-DD')))]}}],null,false,3779034987)})],1),(_vm.AppState.perm.isAdmin)?_c('b-row',{staticClass:\"mt-2\"},[_c('div',{staticClass:\"expire-device-count w-100 text-right\"},[_c('span',[_vm._v(_vm._s(_vm.licenseDialog.summary.items[0].expVol))]),_vm._v(\"/\"),_c('span',[_vm._v(_vm._s(_vm.licenseDialog.summary.items[0].vol))])]),_c('b-table',{staticClass:\"license-expire-table\",attrs:{\"fields\":_vm.licenseDialog.devices.fields,\"items\":_vm.devicelist,\"empty-text\":_vm.$t('no-content'),\"show-empty\":\"\",\"outlined\":\"\",\"responsive\":\"\"},scopedSlots:_vm._u([{key:\"cell(remove)\",fn:function(row){return [_c('div',{on:{\"click\":function($event){return _vm.removeDevice(row.item)}}},[_c('icon',{staticClass:\"delete-icon\",attrs:{\"name\":\"trash\"}})],1)]}}],null,false,1252527959)})],1):_vm._e(),_c('b-row',{staticClass:\"mt-4 flex justify-content-between\"},[_c('b-btn',{staticClass:\"w-30\",on:{\"click\":function($event){return _vm.AppState.$emit('app-logout')}}},[_vm._v(_vm._s(_vm.$t('logout')))]),_c('b-btn',{staticClass:\"w-65\",attrs:{\"variant\":\"primary\",\"to\":{name: 'license'}}},[_vm._v(_vm._s(_vm.$t('renew')))])],1)],1):_vm._e()],1)],2),_c('WOLDialog',{attrs:{\"device\":_vm.wol.device},model:{value:(_vm.wol.show),callback:function ($$v) {_vm.$set(_vm.wol, \"show\", $$v)},expression:\"wol.show\"}}),_c('dialog-access',{attrs:{\"show\":_vm.access.show,\"device\":_vm.access.device},on:{\"update:show\":function($event){return _vm.$set(_vm.access, \"show\", $event)},\"complate\":_vm.accessComplate}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sl-vue-tree\",class:{ 'sl-vue-tree-root': _vm.isRoot },on:{\"mousemove\":_vm.onMousemoveHandler,\"mouseleave\":_vm.onMouseleaveHandler,\"dragend\":function($event){return _vm.onDragendHandler(null, $event)}}},[_c('div',{staticClass:\"sl-vue-tree\",class:{ 'sl-vue-tree-root': _vm.isRoot }},[_c('div',{ref:\"nodes\",staticClass:\"sl-vue-tree-nodes-list\"},[_vm._l((_vm.nodes),function(node,nodeInd){return _c('div',{key:nodeInd,staticClass:\"sl-vue-tree-node\",class:{ 'sl-vue-tree-selected': node.isSelected }},[_c('div',{staticClass:\"sl-vue-tree-cursor sl-vue-tree-cursor_before\",style:({\n visibility: _vm.cursorPosition && _vm.cursorPosition.node.pathStr === node.pathStr && _vm.cursorPosition.placement === 'before' ? 'visible' : 'hidden',\n }),on:{\"dragover\":function($event){$event.preventDefault();}}}),_c('div',{staticClass:\"sl-vue-tree-node-item\",class:{\n 'sl-vue-tree-cursor-hover': _vm.cursorPosition && _vm.cursorPosition.node.pathStr === node.pathStr,\n\n 'sl-vue-tree-cursor-inside': _vm.cursorPosition && _vm.cursorPosition.placement === 'inside' && _vm.cursorPosition.node.pathStr === node.pathStr,\n 'sl-vue-tree-node-is-leaf': node.isLeaf,\n 'sl-vue-tree-node-is-folder': !node.isLeaf,\n },attrs:{\"path\":node.pathStr},on:{\"mousedown\":function($event){return _vm.onNodeMousedownHandler($event, node)},\"mouseup\":function($event){return _vm.onNodeMouseupHandler($event, node)},\"contextmenu\":function($event){return _vm.emitNodeContextmenu(node, $event)},\"dblclick\":function($event){return _vm.emitNodeDblclick(node, $event)},\"click\":function($event){return _vm.emitNodeClick(node, $event)},\"dragover\":function($event){return _vm.onExternalDragoverHandler(node, $event)},\"drop\":function($event){return _vm.onExternalDropHandler(node, $event)}}},[_vm._l((_vm.gaps),function(gapInd){return _c('div',{key:gapInd,staticClass:\"sl-vue-tree-gap\"})}),(_vm.level && _vm.showBranches)?_c('div',{staticClass:\"sl-vue-tree-branch\"},[_vm._t(\"branch\",[(!node.isLastChild)?_c('span',[_vm._v(\" \"+_vm._s(String.fromCharCode(0x251c))+_vm._s(String.fromCharCode(0x2500))+\" \")]):_vm._e(),(node.isLastChild)?_c('span',[_vm._v(\" \"+_vm._s(String.fromCharCode(0x2514))+_vm._s(String.fromCharCode(0x2500))+\" \")]):_vm._e()],{\"node\":node})],2):_vm._e(),_c('div',{staticClass:\"sl-vue-tree-title\"},[(!node.isLeaf)?_c('span',{staticClass:\"sl-vue-tree-toggle\"},[_vm._t(\"toggle\",[_c('span',[_vm._v(\"\\n \"+_vm._s(!node.isLeaf ? (node.isExpanded ? \"-\" : \"+\") : \"\")+\"\\n \")])],{\"node\":node})],2):_vm._e(),_vm._t(\"title\",[_vm._v(_vm._s(node.title))],{\"node\":node})],2),_c('div',{staticClass:\"sl-vue-tree-sidebar\"},[_vm._t(\"sidebar\",null,{\"node\":node})],2)],2),(node.children && node.children.length && node.isExpanded)?_c('sl-vue-tree',{attrs:{\"value\":node.children,\"level\":node.level,\"parentInd\":nodeInd,\"allowMultiselect\":_vm.allowMultiselect,\"edgeSize\":_vm.edgeSize,\"showBranches\":_vm.showBranches},on:{\"dragover\":function($event){$event.preventDefault();}},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\n var node = ref.node;\nreturn [_vm._t(\"title\",[_vm._v(_vm._s(node.title))],{\"node\":node})]}},{key:\"toggle\",fn:function(ref){\n var node = ref.node;\nreturn [_vm._t(\"toggle\",[_c('span',[_vm._v(\"\\n \"+_vm._s(!node.isLeaf ? (node.isExpanded ? \"-\" : \"+\") : \"\")+\"\\n \")])],{\"node\":node})]}},{key:\"sidebar\",fn:function(ref){\n var node = ref.node;\nreturn [_vm._t(\"sidebar\",null,{\"node\":node})]}}],null,true)}):_vm._e(),_c('div',{staticClass:\"sl-vue-tree-cursor sl-vue-tree-cursor_after\",style:({\n visibility: _vm.cursorPosition && _vm.cursorPosition.node.pathStr === node.pathStr && _vm.cursorPosition.placement === 'after' ? 'visible' : 'hidden',\n }),on:{\"dragover\":function($event){$event.preventDefault();}}})],1)}),(_vm.isRoot)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDragging),expression:\"isDragging\"}],ref:\"dragInfo\",staticClass:\"sl-vue-tree-drag-info\"},[_vm._t(\"draginfo\",[_vm._v(\"\\n \"+_vm._s(_vm.selectionTitle)+\"\\n \")])],2):_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n name: \"sl-vue-tree\",\r\n props: {\r\n value: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n edgeSize: {\r\n type: Number,\r\n default: 3,\r\n },\r\n showBranches: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n level: {\r\n type: Number,\r\n default: 0,\r\n },\r\n parentInd: {\r\n type: Number,\r\n },\r\n allowMultiselect: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n multiselectKey: {\r\n type: [String, Array],\r\n default: function() {\r\n return [\"ctrlKey\", \"metaKey\"]\r\n },\r\n validator: function(value) {\r\n let allowedKeys = [\"ctrlKey\", \"metaKey\", \"altKey\"]\r\n let multiselectKeys = Array.isArray(value) ? value : [value]\r\n multiselectKeys = multiselectKeys.filter(keyName => allowedKeys.indexOf(keyName) !== -1)\r\n return !!multiselectKeys.length\r\n },\r\n },\r\n scrollAreaHeight: {\r\n type: Number,\r\n default: 70,\r\n },\r\n maxScrollSpeed: {\r\n type: Number,\r\n default: 20,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n rootCursorPosition: null,\r\n scrollIntervalId: 0,\r\n scrollSpeed: 0,\r\n lastSelectedNode: null,\r\n mouseIsDown: false,\r\n isDragging: false,\r\n lastMousePos: { x: 0, y: 0 },\r\n preventDrag: false,\r\n currentValue: this.value,\r\n draginfoTitle: null,\r\n }\r\n },\r\n\r\n mounted() {\r\n if (this.isRoot) {\r\n document.addEventListener(\"mouseup\", this.onDocumentMouseupHandler)\r\n }\r\n },\r\n\r\n beforeDestroy() {\r\n document.removeEventListener(\"mouseup\", this.onDocumentMouseupHandler)\r\n },\r\n\r\n watch: {\r\n value: function(newValue) {\r\n this.currentValue = newValue\r\n },\r\n },\r\n\r\n computed: {\r\n cursorPosition() {\r\n if (this.isRoot) return this.rootCursorPosition\r\n return this.getParent().cursorPosition\r\n },\r\n\r\n // @@@\r\n nodes() {\r\n if (this.isRoot) {\r\n const nodeModels = this.copy(this.currentValue)\r\n return this.getNodes(nodeModels)\r\n }\r\n\r\n return this.getParent().nodes[this.parentInd].children\r\n },\r\n /**\r\n * gaps is using for nodes indentation\r\n * @returns {number[]}\r\n */\r\n gaps() {\r\n const gaps = []\r\n let i = this.level - 1\r\n if (!this.showBranches) i++\r\n while (i-- > 0) gaps.push(i)\r\n return gaps\r\n },\r\n\r\n isRoot() {\r\n return !this.level\r\n },\r\n\r\n selectionSize() {\r\n return this.getSelected().length\r\n },\r\n\r\n selectionTitle() {\r\n let temp = this.getSelected()\r\n if (temp && temp.length > 0) {\r\n if (temp[0].title) {\r\n this.draginfoTitle = temp[0].title\r\n }\r\n }\r\n return this.draginfoTitle\r\n },\r\n\r\n dragSize() {\r\n return this.getDraggable().length\r\n },\r\n },\r\n methods: {\r\n setCursorPosition(pos) {\r\n if (this.isRoot) {\r\n this.rootCursorPosition = pos\r\n return\r\n }\r\n this.getParent().setCursorPosition(pos)\r\n },\r\n\r\n getNodes(nodeModels, parentPath = [], isVisible = true) {\r\n return nodeModels.map((nodeModel, ind) => {\r\n const nodePath = parentPath.concat(ind)\r\n return this.getNode(nodePath, nodeModel, nodeModels, isVisible)\r\n })\r\n },\r\n\r\n getNode(path, nodeModel = null, siblings = null, isVisible = null) {\r\n const ind = path.slice(-1)[0]\r\n\r\n // calculate nodeModel, siblings, isVisible fields if it is not passed as arguments\r\n siblings = siblings || this.getNodeSiblings(this.currentValue, path)\r\n nodeModel = nodeModel || (siblings && siblings[ind]) || null\r\n\r\n if (isVisible == null) {\r\n isVisible = this.isVisible(path)\r\n }\r\n\r\n if (!nodeModel) return null\r\n\r\n const isExpanded = nodeModel.isExpanded == void 0 ? true : !!nodeModel.isExpanded\r\n const isDraggable = nodeModel.isDraggable == void 0 ? true : !!nodeModel.isDraggable\r\n const isSelectable = nodeModel.isSelectable == void 0 ? true : !!nodeModel.isSelectable\r\n\r\n const node = {\r\n // define the all ISlTreeNodeModel props\r\n title: nodeModel.title,\r\n isLeaf: !!nodeModel.isLeaf,\r\n children: nodeModel.children ? this.getNodes(nodeModel.children, path, isExpanded) : [],\r\n isSelected: !!nodeModel.isSelected,\r\n isExpanded,\r\n isVisible,\r\n isDraggable,\r\n isSelectable,\r\n data: nodeModel.data !== void 0 ? nodeModel.data : {},\r\n\r\n // define the all ISlTreeNode computed props\r\n path: path,\r\n pathStr: JSON.stringify(path),\r\n level: path.length,\r\n ind,\r\n isFirstChild: ind == 0,\r\n isLastChild: ind === siblings.length - 1,\r\n }\r\n return node\r\n },\r\n\r\n isVisible(path) {\r\n if (path.length < 2) return true\r\n let nodeModels = this.currentValue\r\n\r\n for (let i = 0; i < path.length - 1; i++) {\r\n let ind = path[i]\r\n let nodeModel = nodeModels[ind]\r\n let isExpanded = nodeModel.isExpanded == void 0 ? true : !!nodeModel.isExpanded\r\n if (!isExpanded) return false\r\n nodeModels = nodeModel.children\r\n }\r\n\r\n return true\r\n },\r\n\r\n emitInput(newValue) {\r\n this.currentValue = newValue\r\n this.getRoot().$emit(\"input\", newValue)\r\n },\r\n\r\n emitSelect(selectedNodes, event) {\r\n this.getRoot().$emit(\"select\", selectedNodes, event)\r\n },\r\n\r\n emitDrop(draggingNodes, position, event) {\r\n this.getRoot().$emit(\"drop\", draggingNodes, position, event)\r\n },\r\n\r\n emitToggle(toggledNode, event) {\r\n this.getRoot().$emit(\"toggle\", toggledNode, event)\r\n },\r\n\r\n emitNodeClick(node, event) {\r\n this.getRoot().$emit(\"nodeclick\", node, event)\r\n },\r\n\r\n emitNodeDblclick(node, event) {\r\n this.getRoot().$emit(\"nodedblclick\", node, event)\r\n },\r\n\r\n emitNodeContextmenu(node, event) {\r\n this.getRoot().$emit(\"nodecontextmenu\", node, event)\r\n },\r\n\r\n onExternalDragoverHandler(node, event) {\r\n event.preventDefault()\r\n const root = this.getRoot()\r\n const cursorPosition = root.getCursorPositionFromCoords(event.clientX, event.clientY)\r\n root.setCursorPosition(cursorPosition)\r\n root.$emit(\"externaldragover\", cursorPosition, event)\r\n },\r\n\r\n onExternalDropHandler(node, event) {\r\n const root = this.getRoot()\r\n const cursorPosition = root.getCursorPositionFromCoords(event.clientX, event.clientY)\r\n root.$emit(\"externaldrop\", cursorPosition, event)\r\n this.setCursorPosition(null)\r\n },\r\n\r\n select(path, addToSelection = false, event = null) {\r\n if (event === null) return\r\n const multiselectKeys = Array.isArray(this.multiselectKey) ? this.multiselectKey : [this.multiselectKey]\r\n const multiselectKeyIsPressed = event && !!multiselectKeys.find(key => event[key])\r\n addToSelection = (multiselectKeyIsPressed || addToSelection) && this.allowMultiselect\r\n\r\n const selectedNode = this.getNode(path)\r\n if (!selectedNode) return null\r\n const newNodes = this.copy(this.currentValue)\r\n const shiftSelectionMode = this.allowMultiselect && event && event.shiftKey && this.lastSelectedNode\r\n const selectedNodes = []\r\n let shiftSelectionStarted = false\r\n\r\n this.traverse((node, nodeModel) => {\r\n if (shiftSelectionMode) {\r\n if (node.pathStr === selectedNode.pathStr || node.pathStr === this.lastSelectedNode.pathStr) {\r\n nodeModel.isSelected = node.isSelectable\r\n shiftSelectionStarted = !shiftSelectionStarted\r\n }\r\n if (shiftSelectionStarted) nodeModel.isSelected = node.isSelectable\r\n } else if (node.pathStr === selectedNode.pathStr) {\r\n nodeModel.isSelected = node.isSelectable\r\n } else if (!addToSelection) {\r\n if (nodeModel.isSelected) nodeModel.isSelected = false\r\n }\r\n\r\n if (nodeModel.isSelected) selectedNodes.push(node)\r\n }, newNodes)\r\n\r\n this.lastSelectedNode = selectedNode\r\n this.emitInput(newNodes)\r\n this.emitSelect(selectedNodes, event)\r\n this.onToggleHandler(event, selectedNodes[0])\r\n return selectedNode\r\n },\r\n\r\n onMousemoveHandler(event) {\r\n if (!this.isRoot) {\r\n this.getRoot().onMousemoveHandler(event)\r\n return\r\n }\r\n\r\n if (this.preventDrag) return\r\n\r\n const initialDraggingState = this.isDragging\r\n const isDragging = this.isDragging || (this.mouseIsDown && (this.lastMousePos.x !== event.clientX || this.lastMousePos.y !== event.clientY))\r\n\r\n const isDragStarted = initialDraggingState === false && isDragging === true\r\n\r\n this.lastMousePos = {\r\n x: event.clientX,\r\n y: event.clientY,\r\n }\r\n\r\n if (!isDragging) return\r\n\r\n const $root = this.getRoot().$el\r\n const rootRect = $root.getBoundingClientRect()\r\n const $dragInfo = this.$refs.dragInfo\r\n const dragInfoTop = event.clientY - rootRect.top + $root.scrollTop - ($dragInfo.style.marginBottom | 0)\r\n const dragInfoLeft = event.clientX - rootRect.left\r\n\r\n $dragInfo.style.top = dragInfoTop + \"px\"\r\n $dragInfo.style.left = dragInfoLeft + \"px\"\r\n\r\n const cursorPosition = this.getCursorPositionFromCoords(event.clientX, event.clientY)\r\n const destNode = cursorPosition.node\r\n const placement = cursorPosition.placement\r\n\r\n if (isDragStarted && !destNode.isSelected) {\r\n this.select(destNode.path, false, event)\r\n }\r\n\r\n const draggableNodes = this.getDraggable()\r\n if (!draggableNodes.length) {\r\n this.preventDrag = true\r\n return\r\n }\r\n\r\n this.isDragging = isDragging\r\n\r\n this.setCursorPosition({ node: destNode, placement })\r\n\r\n const scrollBottomLine = rootRect.bottom - this.scrollAreaHeight\r\n const scrollDownSpeed = (event.clientY - scrollBottomLine) / (rootRect.bottom - scrollBottomLine)\r\n const scrollTopLine = rootRect.top + this.scrollAreaHeight\r\n const scrollTopSpeed = (scrollTopLine - event.clientY) / (scrollTopLine - rootRect.top)\r\n\r\n if (scrollDownSpeed > 0) {\r\n this.startScroll(scrollDownSpeed)\r\n } else if (scrollTopSpeed > 0) {\r\n this.startScroll(-scrollTopSpeed)\r\n } else {\r\n this.stopScroll()\r\n }\r\n },\r\n\r\n getCursorPositionFromCoords(x, y) {\r\n const $target = document.elementFromPoint(x, y)\r\n const $nodeItem = $target.getAttribute(\"path\") ? $target : $target.closest(\"[path]\")\r\n let destNode\r\n let placement\r\n\r\n if ($nodeItem) {\r\n if (!$nodeItem) return\r\n\r\n destNode = this.getNode(JSON.parse($nodeItem.getAttribute(\"path\")))\r\n\r\n const nodeHeight = $nodeItem.offsetHeight\r\n const edgeSize = this.edgeSize\r\n const offsetY = y - $nodeItem.getBoundingClientRect().top\r\n\r\n if (destNode.isLeaf) {\r\n placement = offsetY >= nodeHeight / 2 ? \"after\" : \"before\"\r\n } else {\r\n if (offsetY <= edgeSize) {\r\n placement = \"before\"\r\n } else if (offsetY >= nodeHeight - edgeSize) {\r\n placement = \"after\"\r\n } else {\r\n placement = \"inside\"\r\n }\r\n }\r\n } else {\r\n const $root = this.getRoot().$el\r\n const rootRect = $root.getBoundingClientRect()\r\n if (y > rootRect.top + rootRect.height / 2) {\r\n placement = \"after\"\r\n destNode = this.getLastNode()\r\n } else {\r\n placement = \"before\"\r\n destNode = this.getFirstNode()\r\n }\r\n }\r\n\r\n return { node: destNode, placement }\r\n },\r\n\r\n onMouseleaveHandler(event) {\r\n if (!this.isRoot || !this.isDragging) return\r\n const $root = this.getRoot().$el\r\n const rootRect = $root.getBoundingClientRect()\r\n if (event.clientY >= rootRect.bottom) {\r\n this.setCursorPosition({ node: this.nodes.slice(-1)[0], placement: \"after\" })\r\n } else if (event.clientY < rootRect.top) {\r\n this.setCursorPosition({ node: this.getFirstNode(), placement: \"before\" })\r\n }\r\n },\r\n\r\n getNodeEl(path) {\r\n this.getRoot().$el.querySelector(`[path=\"${JSON.stringify(path)}\"]`)\r\n },\r\n\r\n getLastNode() {\r\n let lastNode = null\r\n this.traverse(node => {\r\n lastNode = node\r\n })\r\n return lastNode\r\n },\r\n\r\n getFirstNode() {\r\n return this.getNode([0])\r\n },\r\n\r\n getNextNode(path, filter = null) {\r\n let resultNode = null\r\n\r\n this.traverse(node => {\r\n if (this.comparePaths(node.path, path) < 1) return\r\n\r\n if (!filter || filter(node)) {\r\n resultNode = node\r\n return false // stop traverse\r\n }\r\n })\r\n\r\n return resultNode\r\n },\r\n\r\n getPrevNode(path, filter) {\r\n let prevNodes = []\r\n\r\n this.traverse(node => {\r\n if (this.comparePaths(node.path, path) >= 0) {\r\n return false\r\n }\r\n prevNodes.push(node)\r\n })\r\n\r\n let i = prevNodes.length\r\n while (i--) {\r\n const node = prevNodes[i]\r\n if (!filter || filter(node)) return node\r\n }\r\n\r\n return null\r\n },\r\n\r\n /**\r\n * returns 1 if path1 > path2\r\n * returns -1 if path1 < path2\r\n * returns 0 if path1 == path2\r\n *\r\n * examples\r\n *\r\n * [1, 2, 3] < [1, 2, 4]\r\n * [1, 1, 3] < [1, 2, 3]\r\n * [1, 2, 3] > [1, 2, 0]\r\n * [1, 2, 3] > [1, 1, 3]\r\n * [1, 2] < [1, 2, 0]\r\n *\r\n */\r\n comparePaths(path1, path2) {\r\n for (let i = 0; i < path1.length; i++) {\r\n if (path2[i] == void 0) return 1\r\n if (path1[i] > path2[i]) return 1\r\n if (path1[i] < path2[i]) return -1\r\n }\r\n return path2[path1.length] == void 0 ? 0 : -1\r\n },\r\n\r\n onNodeMousedownHandler(event, node) {\r\n // handle only left mouse button\r\n if (event.button !== 0) return\r\n\r\n if (!this.isRoot) {\r\n this.getRoot().onNodeMousedownHandler(event, node)\r\n return\r\n }\r\n this.mouseIsDown = true\r\n },\r\n\r\n startScroll(speed) {\r\n const $root = this.getRoot().$el\r\n if (this.scrollSpeed === speed) {\r\n return\r\n } else if (this.scrollIntervalId) {\r\n this.stopScroll()\r\n }\r\n\r\n this.scrollSpeed = speed\r\n this.scrollIntervalId = setInterval(() => {\r\n $root.scrollTop += this.maxScrollSpeed * speed\r\n }, 20)\r\n },\r\n\r\n stopScroll() {\r\n clearInterval(this.scrollIntervalId)\r\n this.scrollIntervalId = 0\r\n this.scrollSpeed = 0\r\n },\r\n\r\n onDocumentMouseupHandler(event) {\r\n if (this.isDragging) this.onNodeMouseupHandler(event)\r\n },\r\n\r\n onNodeMouseupHandler(event, targetNode = null) {\r\n // handle only left mouse button\r\n if (event.button !== 0) return\r\n\r\n if (!this.isRoot) {\r\n this.getRoot().onNodeMouseupHandler(event, targetNode)\r\n return\r\n }\r\n\r\n this.mouseIsDown = false\r\n\r\n if (!this.isDragging && targetNode && !this.preventDrag) {\r\n this.select(targetNode.path, false, event)\r\n }\r\n\r\n this.preventDrag = false\r\n\r\n if (!this.cursorPosition) {\r\n this.stopDrag()\r\n return\r\n }\r\n\r\n const draggingNodes = this.getDraggable()\r\n\r\n // check that nodes is possible to insert\r\n for (let draggingNode of draggingNodes) {\r\n if (draggingNode.pathStr === this.cursorPosition.node.pathStr) {\r\n this.stopDrag()\r\n return\r\n }\r\n\r\n if (this.checkNodeIsParent(draggingNode, this.cursorPosition.node)) {\r\n this.stopDrag()\r\n return\r\n }\r\n }\r\n\r\n const newNodes = this.copy(this.currentValue)\r\n const nodeModelsToInsert = []\r\n // find and mark dragging model to delete\r\n for (let draggingNode of draggingNodes) {\r\n if (!(this.cursorPosition.placement === \"before\" && this.cursorPosition.node.isLeaf === false)) {\r\n const sourceSiblings = this.getNodeSiblings(newNodes, draggingNode.path)\r\n const draggingNodeModel = sourceSiblings[draggingNode.ind]\r\n nodeModelsToInsert.push(this.copy(draggingNodeModel))\r\n draggingNodeModel[\"_markToDelete\"] = true\r\n }\r\n }\r\n\r\n // insert dragging nodes to the new place\r\n const destNode = this.cursorPosition.node\r\n const destSiblings = this.getNodeSiblings(newNodes, destNode.path)\r\n const destNodeModel = destSiblings[destNode.ind]\r\n\r\n if (this.cursorPosition.placement === \"inside\") {\r\n destNodeModel.children = destNodeModel.children || []\r\n destNodeModel.children.unshift(...nodeModelsToInsert)\r\n } else if (this.cursorPosition.placement === \"before\" && draggingNodes[0].isLeaf && !destNode.isLeaf) {\r\n event.preventDefault()\r\n } else {\r\n const insertInd = this.cursorPosition.placement === \"before\" ? destNode.ind : destNode.ind + 1\r\n destSiblings.splice(insertInd, 0, ...nodeModelsToInsert)\r\n }\r\n\r\n // delete dragging node from the old place\r\n this.traverseModels((nodeModel, siblings, ind) => {\r\n if (!nodeModel._markToDelete) return\r\n siblings.splice(ind, 1)\r\n }, newNodes)\r\n\r\n this.lastSelectedNode = null\r\n this.emitInput(newNodes)\r\n this.emitDrop(draggingNodes, this.cursorPosition, event)\r\n this.stopDrag()\r\n },\r\n\r\n onToggleHandler(event = null, node) {\r\n this.AppState.$emit(\"expanded-data\", node.data.pk)\r\n\r\n this.updateNode(node.path, { isExpanded: !node.isExpanded })\r\n this.emitToggle(node, event)\r\n if (event !== null) event.stopPropagation()\r\n },\r\n\r\n stopDrag() {\r\n this.isDragging = false\r\n this.mouseIsDown = false\r\n this.setCursorPosition(null)\r\n this.stopScroll()\r\n },\r\n\r\n getParent() {\r\n return this.$parent\r\n },\r\n\r\n getRoot() {\r\n if (this.isRoot) return this\r\n return this.getParent().getRoot()\r\n },\r\n\r\n getNodeSiblings(nodes, path) {\r\n if (path.length === 1) return nodes\r\n return this.getNodeSiblings(nodes[path[0]].children, path.slice(1))\r\n },\r\n\r\n updateNode(path, patch) {\r\n if (!this.isRoot) {\r\n this.getParent().updateNode(path, patch)\r\n return\r\n }\r\n\r\n const pathStr = JSON.stringify(path)\r\n const newNodes = this.copy(this.currentValue)\r\n this.traverse((node, nodeModel) => {\r\n if (node.pathStr !== pathStr) return\r\n Object.assign(nodeModel, patch)\r\n }, newNodes)\r\n\r\n this.emitInput(newNodes)\r\n },\r\n\r\n getSelected() {\r\n const selectedNodes = []\r\n this.traverse(node => {\r\n if (node.isSelected) selectedNodes.push(node)\r\n })\r\n return selectedNodes\r\n },\r\n\r\n getDraggable() {\r\n const selectedNodes = []\r\n this.traverse(node => {\r\n if (node.isSelected && node.isDraggable) selectedNodes.push(node)\r\n })\r\n return selectedNodes\r\n },\r\n\r\n traverse(cb, nodeModels = null, parentPath = []) {\r\n if (!nodeModels) nodeModels = this.currentValue\r\n\r\n let shouldStop = false\r\n\r\n const nodes = []\r\n\r\n for (let nodeInd = 0; nodeInd < nodeModels.length; nodeInd++) {\r\n const nodeModel = nodeModels[nodeInd]\r\n const itemPath = parentPath.concat(nodeInd)\r\n const node = this.getNode(itemPath, nodeModel, nodeModels)\r\n shouldStop = cb(node, nodeModel, nodeModels) === false\r\n nodes.push(node)\r\n\r\n if (shouldStop) break\r\n\r\n if (nodeModel.children) {\r\n shouldStop = this.traverse(cb, nodeModel.children, itemPath) === false\r\n if (shouldStop) break\r\n }\r\n }\r\n\r\n return !shouldStop ? nodes : false\r\n },\r\n\r\n traverseModels(cb, nodeModels) {\r\n let i = nodeModels.length\r\n while (i--) {\r\n const nodeModel = nodeModels[i]\r\n if (nodeModel.children) this.traverseModels(cb, nodeModel.children)\r\n cb(nodeModel, nodeModels, i)\r\n }\r\n return nodeModels\r\n },\r\n\r\n remove(paths) {\r\n const pathsStr = paths.map(path => JSON.stringify(path))\r\n const newNodes = this.copy(this.currentValue)\r\n this.traverse((node, nodeModel, siblings) => {\r\n for (const pathStr of pathsStr) {\r\n if (node.pathStr === pathStr) nodeModel._markToDelete = true\r\n }\r\n }, newNodes)\r\n\r\n this.traverseModels((nodeModel, siblings, ind) => {\r\n if (!nodeModel._markToDelete) return\r\n siblings.splice(ind, 1)\r\n }, newNodes)\r\n\r\n this.emitInput(newNodes)\r\n },\r\n\r\n checkNodeIsParent(sourceNode, destNode) {\r\n const destPath = destNode.path\r\n return JSON.stringify(destPath.slice(0, sourceNode.path.length)) == sourceNode.pathStr\r\n },\r\n\r\n copy(entity) {\r\n return JSON.parse(JSON.stringify(entity))\r\n },\r\n },\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-eslint/node_modules/eslint-loader/index.js??ref--12-0!./sl-vue-tree.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-eslint/node_modules/eslint-loader/index.js??ref--12-0!./sl-vue-tree.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./sl-vue-tree.vue?vue&type=template&id=7955a0fa&\"\nimport script from \"./sl-vue-tree.js?vue&type=script&lang=js&\"\nexport * from \"./sl-vue-tree.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"size\":\"lg\",\"header-class\":\"lmm-common-popup-header\",\"hide-footer\":\"\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('template',{slot:\"modal-header\"},[_c('img',{staticStyle:{\"height\":\"20px\"},attrs:{\"src\":require(\"../../assets/admin_main_log.svg\")}})]),_c('b-container',{attrs:{\"fluid\":\"\"}},[(_vm.device)?_c('div',{staticClass:\"context\"},[_c('p',[_vm._v(_vm._s(_vm.$t('remote.wol.desc', {device: _vm.device.alias})))]),_c('b-table',{attrs:{\"busy\":_vm.isBusy,\"items\":_vm.devices,\"fields\":_vm.fields,\"show-empty\":true,\"empty-text\":_vm.$t('no-content'),\"thead-class\":\"lmm-table-head\",\"tbody-class\":\"lmm-table-body\",\"fixed\":\"\"},on:{\"update:busy\":function($event){_vm.isBusy=$event}},scopedSlots:_vm._u([{key:\"cell(ip)\",fn:function(row){return [_vm._v(_vm._s(row.item.s_pub_ip)+\" / \"+_vm._s(row.item.s_pri_ip))]}},{key:\"cell(action)\",fn:function(row){return [_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.sendWOLSignal(row.item)}}},[_vm._v(_vm._s(_vm.$t('remote.wol.title')))])]}}],null,false,302535313)})],1):_vm._e(),_c('div',{staticClass:\"buttons\"},[_c('b-btn',{ref:\"close\",staticClass:\"float-right\",attrs:{\"size\":\"sm\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('cancel')))])],1)])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n b-modal(\r\n size=\"lg\",\r\n v-model=\"value\",\r\n header-class=\"lmm-common-popup-header\",\r\n hide-footer)\r\n template(slot=\"modal-header\")\r\n img(src=\"../../assets/admin_main_log.svg\" style=\"height: 20px\")\r\n b-container(fluid)\r\n div.context(v-if=\"device\")\r\n p {{$t('remote.wol.desc', {device: device.alias})}}\r\n b-table(\r\n :busy.sync=\"isBusy\",\r\n :items=\"devices\",\r\n :fields=\"fields\",\r\n :show-empty=\"true\",\r\n :empty-text=\"$t('no-content')\",\r\n thead-class=\"lmm-table-head\",\r\n tbody-class=\"lmm-table-body\",\r\n fixed)\r\n template(v-slot:cell(ip)=\"row\")\r\n | {{row.item.s_pub_ip}} / {{row.item.s_pri_ip}}\r\n template(v-slot:cell(action)=\"row\")\r\n b-button(size=\"sm\", variant=\"primary\", @click=\"sendWOLSignal(row.item)\") {{$t('remote.wol.title')}}\r\n div.buttons\r\n b-btn(\r\n ref=\"close\",\r\n size=\"sm\",\r\n class=\"float-right\",\r\n @click=\"close\"\r\n ) {{$t('cancel')}}\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./wol.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./wol.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./wol.vue?vue&type=template&id=4b8e3d4e&scoped=true&lang=pug&\"\nimport script from \"./wol.vue?vue&type=script&lang=js&\"\nexport * from \"./wol.vue?vue&type=script&lang=js&\"\nimport style0 from \"./dialogs.scss?vue&type=style&index=0&id=4b8e3d4e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b8e3d4e\",\n null\n \n)\n\nexport default component.exports","/**!\n * Sortable 1.14.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.14.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\n * Selects the provided multi-drag item\n * @param {HTMLElement} el The element to be selected\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\n * Deselects the provided multi-drag item\n * @param {HTMLElement} el The element to be deselected\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\n * Insert multi-drag clones\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\n * @param {HTMLElement} rootEl\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"device-memo-wrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],ref:\"inputbox\",staticClass:\"device-memo-text\",class:{'no-value': !_vm.value},attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\",\"placeholder\":\"-\",\"disabled\":_vm.state!==1},domProps:{\"value\":(_vm.text)},on:{\"keydown\":_vm.validate,\"input\":function($event){if($event.target.composing){ return; }_vm.text=$event.target.value}}}),_c('transition-group',{staticClass:\"edit-buttons\",attrs:{\"name\":\"editable\",\"mode\":\"out-in\",\"tag\":\"div\"}},[(_vm.state===0)?_c('button',{key:\"edit\",staticClass:\"plain-button device-momo-button\",on:{\"click\":_vm.edit}},[_c('icon',{attrs:{\"name\":\"edit\",\"scale\":\"1.3\"}})],1):_vm._e(),(_vm.state===2)?_c('button',{key:\"wait\",staticClass:\"plain-button device-momo-button\"},[_c('icon',{attrs:{\"name\":\"spinner\",\"scale\":\"1.3\",\"spin\":\"\"}})],1):_vm._e(),(_vm.state===1)?_c('button',{key:\"cancel\",staticClass:\"plain-button device-momo-button\",on:{\"click\":_vm.cancel}},[_c('icon',{attrs:{\"name\":\"times-circle\",\"scale\":\"1.3\"}})],1):_vm._e(),(_vm.state===1)?_c('button',{key:\"submit\",staticClass:\"plain-button device-momo-button\",on:{\"click\":_vm.submit}},[_c('icon',{attrs:{\"name\":\"check\",\"scale\":\"1.3\"}})],1):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n div.device-memo-wrapper\r\n input.device-memo-text(\r\n ref=\"inputbox\",\r\n type=\"text\",\r\n autocomplete=\"off\",\r\n autocorrect=\"off\",\r\n autocapitalize=\"off\",\r\n spellcheck=\"false\",\r\n placeholder=\"-\",\r\n v-model=\"text\",\r\n :class=\"{'no-value': !value}\",\r\n :disabled=\"state!==1\",\r\n @keydown=\"validate\")\r\n transition-group.edit-buttons(\r\n name=\"editable\",\r\n mode=\"out-in\",\r\n tag=\"div\")\r\n button.plain-button.device-momo-button(v-if=\"state===0\", @click=\"edit\", key=\"edit\")\r\n icon(name=\"edit\", scale=\"1.3\")\r\n button.plain-button.device-momo-button(v-if=\"state===2\", key=\"wait\")\r\n icon(name=\"spinner\", scale=\"1.3\", spin)\r\n button.plain-button.device-momo-button(v-if=\"state===1\", @click=\"cancel\", key=\"cancel\")\r\n icon(name=\"times-circle\", scale=\"1.3\")\r\n button.plain-button.device-momo-button(v-if=\"state===1\", @click=\"submit\", key=\"submit\")\r\n icon(name=\"check\", scale=\"1.3\")\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deviceMemo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deviceMemo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./deviceMemo.vue?vue&type=template&id=08d1f782&lang=pug&\"\nimport script from \"./deviceMemo.vue?vue&type=script&lang=js&\"\nexport * from \"./deviceMemo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./deviceMemo.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import deviceMemo from './deviceMemo.vue'\r\nexport default deviceMemo\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dialogs',{attrs:{\"show\":_vm.visible,\"option\":{ size: 'lg', headerClass: 'type-2' }},on:{\"update:show\":function($event){_vm.visible=$event}}},[_c('div',{staticClass:\"wrap\"},[(_vm.step === 1)?[_c('div',{staticClass:\"warning\"},[_c('icon',{staticClass:\"icon\",attrs:{\"name\":\"exclamation-triangle\",\"width\":\"50\",\"height\":\"50\"}}),_c('span',[_vm._v(\"※ \"+_vm._s(_vm.$t('device_page.public_access_warning'))+\" ※\")])],1),_c('div',{staticClass:\"box\"},[_c('div',{staticClass:\"msg\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.nl2br(_vm.functionSet.public_place_alert))}})]),_c('div',{staticClass:\"modal-footer\"},[_c('b-btn',{attrs:{\"size\":\"sm\",\"variant\":\"primary\",\"pill\":\"\"},on:{\"click\":_vm.next}},[_vm._v(_vm._s(_vm.$t('agree_and_connect')))]),_c('b-btn',{attrs:{\"size\":\"sm\",\"pill\":\"\"},on:{\"click\":function($event){_vm.visible = false}}},[_vm._v(_vm._s(_vm.$t('agree_and_connect')))])],1)]:_vm._e(),(_vm.step === 2)?[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('security_agreement')))]),_c('div',{staticClass:\"content\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.nl2br(_vm.contract.content))}}),_c('div',{staticClass:\"modal-footer\"},[_c('b-btn',{attrs:{\"size\":\"sm\",\"variant\":\"primary\",\"pill\":\"\"},on:{\"click\":_vm.next}},[_vm._v(_vm._s(_vm.$t('agree_and_connect')))]),_c('b-btn',{attrs:{\"size\":\"sm\",\"pill\":\"\"},on:{\"click\":function($event){_vm.visible = false}}},[_vm._v(_vm._s(_vm.$t('agree_and_connect')))])],1)]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n dialogs(:show.sync=\"visible\" :option=\"{ size: 'lg', headerClass: 'type-2' }\")\r\n .wrap\r\n template(v-if=\"step === 1\")\r\n .warning\r\n icon.icon(name=\"exclamation-triangle\" width=\"50\" height=\"50\")\r\n span ※ {{$t('device_page.public_access_warning')}} ※\r\n .box\r\n .msg(v-html=\"$options.filters.nl2br(functionSet.public_place_alert)\")\r\n .modal-footer\r\n b-btn(size=\"sm\" variant=\"primary\" @click=\"next\" pill) {{$t('agree_and_connect')}}\r\n b-btn(size=\"sm\" @click=\"visible = false\" pill) {{$t('agree_and_connect')}}\r\n template(v-if=\"step === 2\")\r\n .title {{$t('security_agreement')}}\r\n .content(v-html=\"$options.filters.nl2br(contract.content)\")\r\n .modal-footer\r\n b-btn(size=\"sm\" variant=\"primary\" @click=\"next\" pill) {{$t('agree_and_connect')}}\r\n b-btn(size=\"sm\" @click=\"visible = false\" pill) {{$t('agree_and_connect')}}\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dialogAccess.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dialogAccess.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dialogAccess.vue?vue&type=template&id=35f94e5f&scoped=true&lang=pug&\"\nimport script from \"./dialogAccess.vue?vue&type=script&lang=js&\"\nexport * from \"./dialogAccess.vue?vue&type=script&lang=js&\"\nimport style0 from \"./dialogAccess.vue?vue&type=style&index=0&id=35f94e5f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35f94e5f\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\"\r\nimport _ from \"lodash\"\r\nimport axios from \"axios\"\r\nimport Waterfall from \"vue-waterfall/lib/waterfall\"\r\nimport WaterfallSlot from \"vue-waterfall/lib/waterfall-slot\"\r\nimport SlVueTree from \"@/components/mixins/sl-vue-tree/sl-vue-tree.vue\"\r\nimport { DeviceListAPI, DeviceGroupAPI, FavorateAPI, ApprovalsAPI, RemoteAPI, MyDevicesAPI, GetMgridAPI } from \"@/api\"\r\nimport { history } from \"@/api/analystic\"\r\nimport store from \"@/api/store\"\r\nimport { user } from \"@/api/access\"\r\nimport { getExt } from \"@/api/util\"\r\nimport Sidebar from \"../mixins/sidebar\"\r\nimport rm from \"./remote\"\r\nimport { LiveviewDialog } from \"@/components/dialogs\"\r\nimport WOLDialog from \"@/components/dialogs/wol.vue\"\r\nimport Sortable from \"sortablejs\"\r\nimport DeviceMemo from \"../mixins/device-memo\"\r\nimport { EventBus } from \"../management/EventBus\"\r\nimport DialogAccess from \"./components/dialogAccess\"\r\n\r\nconst storeKey = `devices`\r\nlet lastViewMode = \"table\"\r\n\r\nconst hasAttr = (o, a) => {\r\n for (let i = 0; i < a.length; i++) {\r\n let v = a[i]\r\n if (typeof o[v] !== \"string\") return false\r\n }\r\n return true\r\n}\r\n\r\nexport default {\r\n name: \"device-component\",\r\n components: { Sidebar, Waterfall, WaterfallSlot, LiveviewDialog, WOLDialog, SlVueTree, DeviceMemo, DialogAccess },\r\n watch: {\r\n $route: {\r\n handler: function(route) {\r\n this.fetchList()\r\n const pk = route.params.groupPk\r\n const treeApi = this.$refs.sideTree\r\n if (!treeApi) return\r\n treeApi.traverse(node => {\r\n if (node.data.pk === pk) {\r\n if (!node._isSelected) {\r\n if (!route.params.devicePk) {\r\n treeApi.select(node.path)\r\n }\r\n let path = _.clone(node.path)\r\n path.pop()\r\n\r\n while (path.length) {\r\n treeApi.traverse((node, model) => {\r\n if (_.isEqual(node.path, path)) {\r\n Vue.set(model, \"isExpanded\", true)\r\n return false\r\n }\r\n })\r\n path.pop()\r\n }\r\n }\r\n return false\r\n }\r\n })\r\n },\r\n immediate: true,\r\n },\r\n },\r\n computed: {\r\n networkType() {\r\n return store.get(\"networkType\")\r\n },\r\n devices() {\r\n let result = this.devicelist\r\n if (this.$route.params.groupPk === \"favorate\") result = _.filter(this.devicelist, v => v.favorate)\r\n\r\n if (this.filters.value !== null && this.filters.value !== \"\") {\r\n result = _.filter(result, v => {\r\n let value = this.filters.value\r\n if (typeof value === \"number\") return v[this.filters.key.value] === value\r\n else {\r\n if (!v[this.filters.key.value]) return false\r\n return _.includes(v[this.filters.key.value].toUpperCase(), value.toUpperCase())\r\n }\r\n })\r\n }\r\n this.page.total = result.length\r\n const list = _.map(result, v => {\r\n // v.alive = 1\r\n v._rowVariant = \"active\"\r\n v._ext = getExt(v.dev_os_id)\r\n v.ip = `${v.s_pub_ip} (${v.s_pri_ip})`\r\n return v\r\n })\r\n return list\r\n },\r\n // 리스트뷰 (테이블) pagination에 따라 보여지는 원격기기\r\n devicesOnPage() {\r\n let result = this.devicelist\r\n \r\n if (this.$route.params.groupPk === \"favorate\") result = _.filter(this.devicelist, v => v.favorate)\r\n\r\n // sort방식 변경했을 경우, 정렬방식 변경했을 경우 (기본값은 온라인 상태인 원격기기 순으로 정렬)\r\n if (this.sortDesc) {\r\n result = _.sortBy(this.devicelist, v => !v[this.sortBy])\r\n } else {\r\n result = _.sortBy(this.devicelist, v => v[this.sortBy])\r\n }\r\n\r\n if (this.filters.value !== null && this.filters.value !== \"\") {\r\n result = _.filter(result, v => {\r\n let value = this.filters.value\r\n if (typeof value === \"number\") return v[this.filters.key.value] === value\r\n else return _.includes(v[this.filters.key.value].toUpperCase(), value.toUpperCase())\r\n })\r\n }\r\n\r\n this.page.total = result.length\r\n let all = _.map(result, v => {\r\n v._rowVariant = \"active\"\r\n v._ext = getExt(v.dev_os_id)\r\n return v\r\n })\r\n let offset = this.page.per * (this.page.current - 1)\r\n let onPage = _.slice(all, offset, offset + this.page.per)\r\n return onPage\r\n },\r\n // 아이콘뷰 pagination에 따라 보여지는 원격기기\r\n devicesOnIconPage() {\r\n let result = this.devicelist\r\n if (this.$route.params.groupPk === \"favorate\") result = _.filter(this.devicelist, v => v.favorate)\r\n\r\n if (this.filters.value !== null && this.filters.value !== \"\") {\r\n result = _.filter(result, v => {\r\n let value = this.filters.value\r\n if (typeof value === \"number\") return v[this.filters.key.value] === value\r\n else return _.includes(v[this.filters.key.value].toUpperCase(), value.toUpperCase())\r\n })\r\n }\r\n // 온라인 상태인 원격기기 순으로 정렬\r\n result = _.sortBy(this.devicelist, v => !v.alive)\r\n\r\n this.page_icon.total = result.length\r\n let all = _.map(result, v => {\r\n v._rowVariant = \"active\"\r\n v._ext = getExt(v.dev_os_id)\r\n return v\r\n })\r\n let offset = this.page_icon.per * (this.page_icon.current - 1)\r\n let onPage = _.slice(all, offset, offset + this.page_icon.per)\r\n return onPage\r\n },\r\n isRemovableGroup() {\r\n if (!this.grouplist.length) return false\r\n let pk = this.$route.params.groupPk\r\n if (!pk) return false\r\n let group = _.find(this.grouplist, { pk })\r\n if (!group) return false\r\n return !group.flag_df_group\r\n },\r\n upperGroup() {\r\n const pk = this.$route.params.groupPk ? parseInt(this.$route.params.groupPk, 10) : null\r\n\r\n if (pk === null) return false\r\n let selectedGroup = _.find(this.grouplist, { pk })\r\n if (!selectedGroup) return false\r\n return selectedGroup.group_fk || false\r\n },\r\n childGroup() {\r\n const pk = this.$route.params.groupPk ? parseInt(this.$route.params.groupPk, 10) : null\r\n\r\n if (pk === null) return []\r\n return _.filter(this.grouplist, { group_fk: pk })\r\n },\r\n groupName() {\r\n let result = null\r\n let pk = Number(this.$route.params.groupPk)\r\n this.grouplist.forEach(v => {\r\n if (v.pk === pk) {\r\n result = v.name\r\n }\r\n })\r\n return result\r\n },\r\n groupDeviceCount() {\r\n let result = null\r\n let pk = Number(this.$route.params.groupPk)\r\n this.grouplist.forEach(v => {\r\n if (v.pk === pk) {\r\n result = v.deviceCount\r\n }\r\n })\r\n return result\r\n },\r\n },\r\n created() {\r\n // icon-view-changed 이벤트. GNB 에서 토글 버튼을 통해 View 모드를 변경.\r\n EventBus.$on(\"icon-view-changed\", data => {\r\n this.simpleMode = data\r\n this.viewMode = this.simpleMode ? \"card\" : \"table\"\r\n })\r\n this.simpleMode = store.get(\"icon_view\")\r\n this.viewMode = this.simpleMode ? \"card\" : \"table\"\r\n document.addEventListener(\"click\", e => this.handleMouseClick(e))\r\n window.addEventListener(\"keydown\", e => {\r\n if (this.showMenu && e.key == \"Escape\") this.showMenu = false\r\n })\r\n\r\n this.checkFields()\r\n },\r\n mounted() {\r\n this.fetchGroup()\r\n this.timer = setInterval(() => {\r\n this.timestamp = new Date().getTime()\r\n }, 5000)\r\n\r\n this.AppState.$on(\"expanded-data\", data => {\r\n if (!this.expandedList.includes(data)) {\r\n this.expandedList.push(data)\r\n } else {\r\n this.expandedList = this.expandedList.filter(v => v !== data)\r\n }\r\n })\r\n this.AppState.$on(\"device-list-reload\", data => {\r\n this.fetchList()\r\n })\r\n },\r\n beforeDestroy() {\r\n clearInterval(this.timer)\r\n this.AppState.$off(\"device-state-change\")\r\n EventBus.$off('icon-view-changed');\r\n },\r\n data() {\r\n return {\r\n lang: this.$i18n.locale,\r\n nodes: [],\r\n groupNodes: [],\r\n groupNodesMoveList: [],\r\n timer: null,\r\n timestamp: 0,\r\n viewMode: store.get(\"rememberMode\"),\r\n editModeCheckboxState: true,\r\n excelLoaded: false,\r\n isBusy: false,\r\n nodeTitle: null,\r\n sidebarTargetNode: {},\r\n wait: false,\r\n simpleMode: false,\r\n selectedCount: 0,\r\n isCheckAll: false,\r\n isIndeterminate: false,\r\n sortBy: \"alive\",\r\n sortDesc: true,\r\n showTooltip: {},\r\n menuIndex: {\r\n remote: 0,\r\n transfer: 1,\r\n wol: 2,\r\n approve: 3,\r\n detail: 4,\r\n live: 5,\r\n edit: 6,\r\n process: 7,\r\n update: 8,\r\n restart: 9,\r\n delete: 10,\r\n reboot: 11,\r\n shutdown: 12,\r\n },\r\n // 모든 메뉴는 숨김으로(0) 초기화\r\n // 사용자 권한에 따라 1로 변경될 예정\r\n contextMenuItems: [\r\n {\r\n text: this.$t(\"remote.normal.title\"),\r\n action: \"remote\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.transfer.title\"),\r\n action: \"transfer\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.wol.title\"),\r\n action: \"wol\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.approve.desc\"),\r\n action: \"approve\",\r\n status: 0,\r\n },\r\n // 상세보기 메뉴는 모든 사용자에게 제공\r\n {\r\n text: this.$t(\"remote.detail.title\"),\r\n action: \"detail\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.preview.title\"),\r\n action: \"live\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"list_of_process\"),\r\n action: \"process\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"permissions.CSUpdate\"),\r\n action: \"update\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.restart.title\"),\r\n action: \"restart\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.delete.title\"),\r\n action: \"delete\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.reboot.title\"),\r\n action: \"reboot\",\r\n status: 0,\r\n },\r\n {\r\n text: this.$t(\"remote.shutdown.title\"),\r\n action: \"shutdown\",\r\n status: 0,\r\n },\r\n ],\r\n showMenu: false,\r\n showIconMenu: false,\r\n selectedItem: null,\r\n menuPosition: {},\r\n groupCount: {\r\n usage: 0,\r\n limit: null,\r\n },\r\n cardSize: {\r\n current: 1,\r\n sizes: [\r\n {\r\n lineGap: 240,\r\n minLineGap: 220,\r\n maxLineGap: 280,\r\n height: 246,\r\n },\r\n {\r\n lineGap: 300,\r\n minLineGap: 280,\r\n maxLineGap: 320,\r\n height: 200,\r\n },\r\n {\r\n lineGap: 440,\r\n minLineGap: 320,\r\n maxLineGap: 520,\r\n height: 200,\r\n },\r\n {\r\n lineGap: 580,\r\n minLineGap: 520,\r\n maxLineGap: 680,\r\n height: 200,\r\n },\r\n ],\r\n },\r\n fields: [\r\n {\r\n key: \"checkbox\",\r\n label: \"\",\r\n thClass: \"text-center\",\r\n tdClass: \"text-center\",\r\n sortable: false,\r\n thStyle: { minWidth: \"60px\" },\r\n },\r\n {\r\n key: \"groups_flag\",\r\n label: this.$t(\"multiple\"),\r\n thClass: \"text-center\",\r\n tdClass: \"text-center\",\r\n sortable: false,\r\n thStyle: { minWidth: \"45px\" },\r\n },\r\n {\r\n key: \"groups\",\r\n label: this.$t(\"group_info\"),\r\n thClass: \"text-center\",\r\n tdClass: \"text-center\",\r\n sortable: true,\r\n thStyle: { minWidth: \"140px\" },\r\n },\r\n {\r\n key: \"alias\",\r\n label: this.$t(\"columns.alias\"),\r\n sortable: true,\r\n thStyle: { minWidth: \"200px\" },\r\n },\r\n {\r\n key: \"actions\",\r\n label: this.$t(\"columns.actions\"),\r\n sortable: false,\r\n thStyle: { minWidth: \"170px\" },\r\n },\r\n {\r\n key: \"alive\",\r\n label: this.$t(\"columns.alive\"),\r\n tdClass: \"text-left\",\r\n thClass: \"text-left\",\r\n sortable: true,\r\n thStyle: { minWidth: \"100px\" },\r\n },\r\n {\r\n key: \"dev_ver\",\r\n label: this.$t(\"version\"),\r\n tdClass: \"text-left\",\r\n thClass: \"text-left\",\r\n sortable: true,\r\n thStyle: { minWidth: \"110px\" },\r\n },\r\n {\r\n key: \"memo\",\r\n label: this.$t(\"columns.memo\"),\r\n sortable: false,\r\n thStyle: { minWidth: \"200px\" },\r\n },\r\n {\r\n key: \"dev_os_id\",\r\n label: \"O/S\",\r\n tdClass: \"text-left\",\r\n thClass: \"text-left\",\r\n sortable: true,\r\n thStyle: { minWidth: \"140px\" },\r\n },\r\n {\r\n key: \"ip\",\r\n label: \"IP\",\r\n tdClass: \"text-left\",\r\n thClass: \"text-left\",\r\n sortable: true,\r\n thStyle: { minWidth: \"180px\" },\r\n },\r\n {\r\n key: \"favorate\",\r\n label: this.$t(\"favorate\"),\r\n tdClass: \"text-center\",\r\n thClass: \"text-center\",\r\n sortable: true,\r\n thStyle: { minWidth: \"160px\" },\r\n },\r\n ],\r\n page: {\r\n total: 0,\r\n current: 1,\r\n per: 12,\r\n perOptions: [\r\n { value: 12, text: \"12\" },\r\n { value: 24, text: \"24\" },\r\n { value: 36, text: \"36\" },\r\n ],\r\n },\r\n page_icon: {\r\n total: 0,\r\n current: 1,\r\n per: 12,\r\n perOptions: [\r\n { value: 12, text: \"12\" },\r\n { value: 24, text: \"24\" },\r\n { value: 36, text: \"36\" },\r\n ],\r\n },\r\n grouplist: [],\r\n groupLoad: false,\r\n devicelist: [],\r\n expandedList: [],\r\n filters: {\r\n val: \"alias\",\r\n key: { value: \"alias\", text: this.$t(\"device_name\") },\r\n keyOptions: [\r\n { value: \"alias\", text: this.$t(\"device_name\") },\r\n { value: \"memo\", text: this.$t(\"columns.memo\") },\r\n { value: \"ip\", text: \"IP\" },\r\n { value: \"alive\", text: this.$t(\"status\") },\r\n { value: \"dev_os_id\", text: this.$t(\"O/S\") },\r\n ],\r\n value: null,\r\n osOptions: [\r\n { value: \"\", text: this.$t(\"total\") },\r\n { value: 1, text: \"Windows\" },\r\n { value: 2, text: \"Linux\" },\r\n { value: 3, text: \"MacOS\" },\r\n { value: 4, text: \"Android\" },\r\n ],\r\n statusOptions: [\r\n { value: \"\", text: this.$t(\"total\") },\r\n { value: 1, text: \"Online\" },\r\n { value: 0, text: \"Offline\" },\r\n ],\r\n },\r\n filterPreValue: null,\r\n licenseDialog: {\r\n show: false,\r\n summary: {},\r\n devices: {},\r\n },\r\n groupDialog: {\r\n show: false,\r\n },\r\n liveView: {\r\n show: false,\r\n source: null,\r\n alive: 0,\r\n },\r\n wol: {\r\n show: false,\r\n device: null,\r\n },\r\n access: {\r\n name: null,\r\n show: false,\r\n device: null,\r\n },\r\n agent: `${this.AppState.Path.download}/agent`,\r\n processData: [],\r\n process_fields: [\r\n { key: \"name\", label: this.$t(\"name\") },\r\n { key: \"cpu\", label: \"CPU \" + this.$t(\"use_rate\") },\r\n { key: \"memory\", label: \"Memory \" + this.$t(\"use_rate\") },\r\n ],\r\n tableClass: \"\",\r\n\r\n showDuplication: false,\r\n }\r\n },\r\n methods: {\r\n fetchList() {\r\n while (this.groupLoad === false) {\r\n setTimeout(() => {\r\n this.fetchList()\r\n }, 100)\r\n return\r\n }\r\n this.$log.info(\"[LOAD DATA FROM SERVER]\")\r\n this.isBusy = true\r\n let params = {\r\n by: this.sortBy,\r\n device_group_pk: this.$route.params.groupPk === \"favorate\" ? \"all\" : this.$route.params.groupPk,\r\n order: this.sortDesc ? \"desc\" : \"asc\",\r\n search_mode: \"normal\",\r\n network_type: this.networkType.indexOf(\"i\") === 0 ? \"internal\" : \"external\",\r\n }\r\n\r\n if (this.$route.params.groupPk === \"self\") {\r\n axios.all([MyDevicesAPI.get(\"\", { params }), FavorateAPI.get(\"\")]).then(\r\n axios.spread((devices, favs) => {\r\n this.devicelist = _.map(devices.data.objects, v => {\r\n v.aliasNew = v.alias\r\n v.memoNew = v.memo\r\n v.favorate = null\r\n v.groups_flag = v.device_group_name.length > 0 ? 1 : 0\r\n \r\n if (v.device_group_name.length > 1) {\r\n v.groups = `${v.device_group_name[0]}`\r\n } else if (v.device_group_name.length === 1) {\r\n v.groups = v.device_group_name[0] // 1개면 그대로 표시\r\n } else {\r\n v.groups = \"-\" // 0개일 경우 예외 처리\r\n }\r\n \r\n return v\r\n })\r\n\r\n _.each(favs.data.objects, v => {\r\n let dev = _.find(this.devicelist, { pk: v.dev_pk })\r\n if (dev) dev.favorate = v\r\n })\r\n\r\n this.setNodes()\r\n this.calcLicense()\r\n this.isBusy = false\r\n }),\r\n )\r\n } else {\r\n axios.all([DeviceListAPI.get(\"\", { params }), FavorateAPI.get(\"\")]).then(\r\n axios.spread((devices, favs) => {\r\n this.devicelist = _.map(devices.data.objects, v => {\r\n v.aliasNew = v.alias\r\n v.memoNew = v.memo\r\n v.favorate = null\r\n v.groups_flag = v.device_group_name.length > 0 ? 1 : 0\r\n v.groups = v.device_group_name\r\n \r\n if (v.device_group_name.length > 1) {\r\n v.groups = `${v.device_group_name[0]}`\r\n } else if (v.device_group_name.length === 1) {\r\n v.groups = v.device_group_name[0] // 1개면 그대로 표시\r\n } else {\r\n v.groups = \"-\" // 0개일 경우 예외 처리\r\n }\r\n \r\n return v\r\n })\r\n\r\n _.each(favs.data.objects, v => {\r\n let dev = _.find(this.devicelist, { pk: v.dev_pk })\r\n if (dev) dev.favorate = v\r\n })\r\n\r\n this.setNodes()\r\n this.calcLicense()\r\n this.isBusy = false\r\n }),\r\n )\r\n }\r\n },\r\n fetchGroup() {\r\n const params = {\r\n network_type: this.networkType.indexOf(\"i\") === 0 ? \"internal\" : \"external\",\r\n }\r\n DeviceGroupAPI.get(\"\", { params }).then(res => {\r\n let groupTmp = this.groupPermFilter(res.data.objects)\r\n groupTmp = _.sortBy(groupTmp, [\r\n o => {\r\n if (o.name === \"ROOT\") {\r\n o.name = this.$t(\"reserved.ROOT\")\r\n return \"0\"\r\n }\r\n return o.name\r\n },\r\n ])\r\n\r\n this.grouplist = groupTmp\r\n this.groupLoad = true\r\n\r\n })\r\n },\r\n async downloadExcel() {\r\n this.excelLoaded = true\r\n try {\r\n const params = await this.fetchExcel()\r\n \r\n if (params === \"excel_download_cancel\") {\r\n this.excelLoaded = false\r\n return\r\n }\r\n \r\n const form = document.createElement(\"form\")\r\n form.method = \"post\"\r\n form.action = \"/download/excel.html\" // /download/excel.html을 통해 DownloadExcelFileAPI호출\r\n form.target = \"_blank\"\r\n \r\n // 엑셀 생성에 필요한 필터된 데이터를 폼에 추가\r\n const input = document.createElement(\"input\")\r\n input.type = \"hidden\"\r\n input.name = \"jsondata\"\r\n input.value = JSON.stringify({ ...params, language: this.$i18n.locale })\r\n form.appendChild(input)\r\n \r\n // body에 폼 추가 및 제출 그 후 제거\r\n document.body.appendChild(form)\r\n form.submit()\r\n document.body.removeChild(form)\r\n } catch (error) {\r\n alert(error.message)\r\n } finally {\r\n this.excelLoaded = false\r\n }\r\n },\r\n\r\n async fetchExcel() {\r\n let params = {\r\n by: \"device_name\",\r\n device_group_pk: this.$route.params.groupPk === \"favorate\" ? \"all\" : this.$route.params.groupPk,\r\n order: \"desc\",\r\n search_mode: \"normal\",\r\n network_type: this.networkType.indexOf(\"i\") === 0 ? \"internal\" : \"external\",\r\n }\r\n\r\n let list = null\r\n let excel_doc_title = \"\"\r\n\r\n if (this.$route.params.groupPk === \"favorate\") {\r\n // 즐겨찾기에서 엑셀 다운로드\r\n list = await DeviceListAPI.get(\"\", { params })\r\n let list2 = await FavorateAPI.get(\"\")\r\n if (list2.data.objects.length === 0) {\r\n alert(this.$t('toasts_message.no_data_to_download'))\r\n return \"excel_download_cancel\"\r\n }\r\n list = this.join_all_favorite(list.data.objects, list2.data.objects) //즐겨찾기 데이터와 조인\r\n excel_doc_title = `${this.$t('device_page.remote_device_list')}_${this.$t('favorate')}`\r\n } else if (this.$route.params.groupPk == \"self\") {\r\n // 본인이 등록한 에이전트에서 엑셀 다운로드\r\n list = await MyDevicesAPI.get(\"\", { params })\r\n excel_doc_title = `${this.$t('device_page.remote_device_list')}_${this.$t('device_page.self_registration')}`\r\n list = list.data.objects\r\n } else {\r\n // 모든 에이전트에서 엑셀 다운로드 or 각 그룹별 엑셀 다운로드\r\n list = await DeviceListAPI.get(\"\", { params })\r\n excel_doc_title = this.$t('device_page.remote_device_list')\r\n list = list.data.objects\r\n }\r\n\r\n const excelParams = list\r\n \r\n if (excelParams.length === 0) {\r\n throw new Error(this.$t('toasts_message.no_data_to_download') || 'No data to download.');\r\n }\r\n \r\n const { data } = await GetMgridAPI.get(\"\")\r\n const excelParams_for_download = {\r\n api: excelParams.api,\r\n excel_doc_title: \"\",\r\n pagename: \"\",\r\n mgrid: data.objects.mgrid,\r\n objects: this.downloaded_excel_data_form(excelParams),\r\n }\r\n excelParams_for_download.pagename = \"AgentList\"\r\n excelParams_for_download.excel_doc_title = excel_doc_title\r\n return excelParams_for_download\r\n },\r\n join_all_favorite(A, B) {\r\n var filteredData = []\r\n for (var i = 0; i < A.length; i++) {\r\n var itemA = A[i]\r\n for (var j = 0; j < B.length; j++) {\r\n var itemB = B[j]\r\n if (itemA.pk === itemB.dev_pk) {\r\n filteredData.push(itemA)\r\n break\r\n }\r\n }\r\n }\r\n\r\n return filteredData\r\n },\r\n downloaded_excel_data_form(input) {\r\n let originalLocale = this.$i18n.locale // 현재 언어 저장\r\n this.$i18n.locale = \"ko\"\r\n \r\n let output = []\r\n let dev_os_id = {\r\n \"\": this.$t(\"total\"),\r\n \"1\": \"Windows\",\r\n \"2\": \"Linux\",\r\n \"3\": \"MacOS\",\r\n \"4\": \"Android\",\r\n }\r\n for (let index = 0; index < input.length; index++) {\r\n let obj = {\r\n [this.$t('device_page.remote_device_group_name')]: input[index][\"device_group_name\"],\r\n [`${this.$t('remote_device')} ${this.$t('name')}`]: input[index][\"alias\"],\r\n [this.$t('status')]: input[index][\"actions\"],\r\n [this.$t('version')]: input[index][\"dev_ver\"],\r\n [this.$t('memo')]: input[index][\"memo\"],\r\n \"O/S\": dev_os_id[input[index][\"dev_os_id\"]],\r\n Pri_Ip: input[index][\"s_pri_ip\"],\r\n Pub_Ip: input[index][\"s_pub_ip\"],\r\n \r\n }\r\n let obj2 = Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, this.nullcheck(value)]))\r\n output.push(obj2)\r\n }\r\n this.$i18n.locale = originalLocale\r\n return output\r\n },\r\n nullcheck(input) {\r\n return input == null ? \"-\" : input\r\n },\r\n\r\n imageLoaded({ target }) {\r\n let { width, height } = target\r\n if (width > height) {\r\n target.className = \"w-100\"\r\n } else {\r\n target.className = \"h-100\"\r\n }\r\n },\r\n imageError({ target }) {\r\n target.src = `${this.AppState.Path.image}/live/live_no_img.jpg`\r\n },\r\n setFavorate(dev) {\r\n if (dev.favorate) {\r\n FavorateAPI.delete(\"\", { params: { favnum: dev.favorate.pk } }).then(resp => {\r\n dev.favorite = 0\r\n dev.favorate = null\r\n })\r\n } else {\r\n FavorateAPI.post(\"\", { servernum: dev.pk }).then(resp => {\r\n dev.favorite = 1\r\n dev.favorate = resp.data.objects\r\n })\r\n }\r\n },\r\n getAlive(id) {\r\n return id === 1 ? \"toggle-on\" : \"toggle-off\"\r\n },\r\n getOS(id) {\r\n switch (id) {\r\n case 1:\r\n return \"windows\"\r\n default:\r\n return \"windows\"\r\n }\r\n },\r\n setFilterKey(opt) {\r\n this.filters.value = null\r\n this.filterPreValue = null\r\n this.filters.key = opt\r\n },\r\n setFilterKey2(value) {\r\n this.filters.value = null\r\n this.filterPreValue = null\r\n this.filters.key = _.find(this.filters.keyOptions, { value })\r\n this.$nextTick(() => {\r\n this.filterPreValue = \"\"\r\n })\r\n },\r\n setFilterValue() {\r\n this.filters.value = this.filterPreValue\r\n },\r\n // @@@\r\n setViewMode(mode) {\r\n if (!mode) {\r\n let params = {\r\n context: { path: \"not_save_warning\" },\r\n withoutInput: true,\r\n submit: {\r\n size: \"sm\",\r\n color: \"danger\",\r\n text: \"off-editmode\",\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, data) => {\r\n if (key === \"submit\") {\r\n this.viewMode = lastViewMode\r\n }\r\n })\r\n return\r\n }\r\n if (mode !== \"edit\") lastViewMode = mode\r\n if (this.viewMode === \"edit\") {\r\n _.each(this.devicelist, v => {\r\n v._isSelected = false\r\n })\r\n }\r\n if (mode === \"live\" && !this.AppState.isCorporate) {\r\n this.AppState.$emit('show-block-dialog')\r\n }\r\n else this.viewMode = mode\r\n\r\n if (mode === \"card\") {\r\n this.AppState.isIconView = this.simpleMode\r\n store.set(\"icon_view\", this.simpleMode)\r\n } else this.AppState.isIconView = this.simpleMode\r\n store.set(\"icon_view\", this.simpleMode)\r\n },\r\n showLiveView(device) {\r\n this.liveView.alive = device.alive\r\n this.liveView.source = `${this.AppState.Path.live}/${device.guid}.${device._ext}?cache=${this.timestamp}`\r\n this.liveView.show = true\r\n },\r\n liveViewChange(value) {\r\n this.liveView.show = value\r\n },\r\n viewDetail(item) {\r\n // (item, index, event)\r\n if (this.networkType.indexOf('e') === 0) {\r\n this.$router.push({\r\n name: \"device-detail\",\r\n params: { devicePk: item.pk },\r\n query: this.$route.query,\r\n })\r\n }\r\n },\r\n showWOLList(dev) {\r\n this.wol.device = dev\r\n this.wol.show = true\r\n },\r\n groupDialogOpen() {\r\n this.groupDialog.show = true\r\n },\r\n openModal(name, device) {\r\n if (name === \"restart\" && device === null) {\r\n let selects = _.filter(this.devicelist, v => v.checkbox)\r\n device = selects[0]\r\n }\r\n\r\n if (device.alive === 0) {\r\n let params = {\r\n title: \"LinkMeMine\",\r\n context: { path: \"not_online_warning\" },\r\n }\r\n this.AppState.$emit(\"show-message-dialog\", params)\r\n return\r\n }\r\n\r\n const { isMobile, isApplication, os } = this.AppState\r\n if (isMobile && !isApplication && name === \"remote\") {\r\n let params = {\r\n context: {\r\n path: \"mobile_store\",\r\n args: { url: this.AppState.mobile[os] },\r\n },\r\n }\r\n return this.AppState.$emit(\"show-message-dialog\", params)\r\n }\r\n\r\n const { ua } = this.AppState\r\n let descName = ua.os.name === \"Mac OS\" ? \"desc_mac\" : \"desc\"\r\n let params = {\r\n title: this.$t(`remote.${name}.title`),\r\n context: this.$t(`remote.${name}.${descName}`),\r\n sort: \"device\",\r\n buttons: [\r\n {\r\n size: \"sm\",\r\n color: \"primary\",\r\n text: this.$t(\"execute\"),\r\n action: close => {\r\n const resp = rm[name](device)\r\n if (resp === false) {\r\n this.$awn.alert(this.$t('not_supported_os'))\r\n } else if (resp === 'mobile') {\r\n // pass\r\n }\r\n else {\r\n this.$awn.success(this.$t(`remote.${name}.${resp}`))\r\n }\r\n close()\r\n },\r\n },\r\n ],\r\n }\r\n\r\n if (name === \"reboot\" || name === \"shutdown\") {\r\n params.buttons[0].color = \"danger\"\r\n }\r\n\r\n if (!!process.env.VUE_APP_USE_ACTIVEX && ua.browser.name === \"IE\") {\r\n params.buttons.unshift({\r\n size: \"sm\",\r\n color: \"secondary\",\r\n text: this.$t(\"execute\") + this.$t(\"program\") + \" \" + this.$t(\"download\"),\r\n action: close => {\r\n const noActiveX = true\r\n const resp = rm[name](device, noActiveX)\r\n if (resp === false) this.$awn.alert(this.$t(\"not_supported_os\"))\r\n this.$awn.success(this.$t(`remote.${name}.${resp}`))\r\n close()\r\n },\r\n })\r\n }\r\n\r\n if (ua.os.name === \"Mac OS\" /*&& window.navigator.maxTouchPoints === 0*/) {\r\n params.buttons.unshift({\r\n size: \"sm\",\r\n color: \"secondary\",\r\n text: this.$t(\"program\") + \" \" + this.$t(\"download\"),\r\n action: () => {\r\n window.open(`${this.AppState.Path.download}/lmmviewer/LinkMeMine_Viewer_installer.zip?cache=200528_01`, \"_blank\")\r\n },\r\n })\r\n }\r\n\r\n //보안서약서\r\n if (name === \"remote\" && device.security_agreement) {\r\n let params = {\r\n title: \"test\",\r\n }\r\n this.AppState.$emit(\"show-security-dialog\", params, (key, data) => {\r\n if (key == \"submit\") {\r\n let params = {\r\n title: this.$t(`remote.${name}.title`),\r\n context: this.$t(`remote.${name}.desc`),\r\n download: true,\r\n buttons: [\r\n {\r\n size: \"sm\",\r\n color: \"primary\",\r\n text: this.$t(\"execute\"),\r\n action: close => {\r\n const resp = rm[name](device)\r\n if (resp === false) this.$awn.alert(this.$t(\"not_supported_os\"))\r\n this.$awn.success(this.$t(`remote.${name}.${resp}`))\r\n close()\r\n },\r\n },\r\n ],\r\n }\r\n this.AppState.$emit(\"show-action-dialog\", params)\r\n }\r\n })\r\n return\r\n }\r\n \r\n // if (name === \"remote\" && device.accessComplate === undefined) {\r\n // this.access.show = true\r\n // this.access.name = name\r\n // this.access.device = device\r\n // return\r\n // }\r\n\r\n this.AppState.$emit(\"show-action-dialog\", params)\r\n },\r\n accessComplate() {\r\n this.access.show = false\r\n const device = this.access.device\r\n device.accessComplate = true\r\n this.openModal(this.access.name, device)\r\n },\r\n warningModal(name, device) {\r\n const { ua } = this.AppState\r\n let descName = ua.os.name === \"Mac OS\" ? \"desc_mac\" : \"desc\"\r\n let params = {\r\n title: this.$t(`remote.${name}.title`),\r\n context: this.$t(`remote.${name}.${descName}`),\r\n sort: \"device\",\r\n buttons: [\r\n {\r\n size: \"sm\",\r\n color: \"danger\",\r\n text: this.$t(\"execute\"),\r\n action: close => {\r\n const resp = rm[name](device)\r\n if (resp === false) this.$awn.alert(this.$t(\"not_supported_os\"))\r\n else this.$awn.success(this.$t(`remote.${name}.${resp}`))\r\n close()\r\n },\r\n },\r\n ],\r\n }\r\n this.AppState.$emit(\"show-warning-dialog\", params)\r\n },\r\n addGroup() {\r\n const companyKey = user().company_fk\r\n let group_fk = this.$route.params.groupPk\r\n let root_group_fk = null\r\n let group = null\r\n if (group_fk) {\r\n group_fk = parseInt(group_fk, 10)\r\n group = _.find(this.grouplist, { pk: group_fk })\r\n if (group) root_group_fk = _.find(this.grouplist, { pk: group_fk }).root_group_fk\r\n else group_fk = null\r\n if (!root_group_fk) root_group_fk = group_fk\r\n } else group_fk = null\r\n\r\n let params = {\r\n context: group_fk\r\n ? { title: this.$t(\"add-group-child\"), path: \"add_child_group\", args: { name: group.name } }\r\n : { title: this.$t(\"add-group\"), path: \"add_root_group\" },\r\n limit: 40,\r\n placeholder: \"name\",\r\n submit: {\r\n size: \"sm\",\r\n color: \"primary\",\r\n text: \"create\",\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, data) => {\r\n if (key === \"submit\") {\r\n let params = {\r\n name: data,\r\n flag_df_group: false,\r\n flag_confirm: false,\r\n group_fk,\r\n root_group_fk,\r\n company_fk: companyKey,\r\n }\r\n DeviceGroupAPI.post(\"\", params).then(resp => {\r\n if (resp.data.objects.overlap) {\r\n this.$awn.alert(this.$t(\"duplication_group_name\"))\r\n } else {\r\n const group = resp.data.objects\r\n this.grouplist.push(group)\r\n store.update(\"devices\", ({ groups }) => {\r\n group.has_permission = true\r\n groups.push(group)\r\n })\r\n this.setNodes()\r\n this.$awn.success(this.$t(\"created_group\"))\r\n }\r\n })\r\n }\r\n })\r\n },\r\n removeGroup() {\r\n let params = {\r\n context: { path: \"confirm_delete_group\" },\r\n withoutInput: true,\r\n submit: {\r\n size: \"sm\",\r\n color: \"danger\",\r\n text: { path: \"delete_group\" },\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, data) => {\r\n if (key === \"submit\") {\r\n let pk = this.$route.params.groupPk\r\n DeviceGroupAPI.delete(`${pk}`).then(resp => {\r\n _.remove(this.grouplist, v => v.pk === pk)\r\n store.update(\"devices\", ({ groups }) => {\r\n _.remove(groups, v => v.pk === pk)\r\n })\r\n this.$awn.success(this.$t(\"deleted_group\"))\r\n this.setNodes()\r\n this.$nextTick(() => {\r\n this.$router.replace({ name: \"device-root\" })\r\n })\r\n })\r\n }\r\n })\r\n },\r\n setCardItemSize(type) {\r\n if (type === \"smaller\") {\r\n if (this.cardSize.current === 0) return\r\n this.cardSize.current--\r\n } else if (type === \"bigger\") {\r\n if (this.cardSize.current === this.cardSize.sizes.length - 1) return\r\n this.cardSize.current++\r\n }\r\n },\r\n backToParent() {\r\n const pk = this.$route.params.groupPk ? parseInt(this.$route.params.groupPk, 10) : null\r\n if (pk) {\r\n let selected = _.find(this.grouplist, { pk })\r\n if (selected.root_group_fk) this.$router.push({ query: { group: selected.group_fk } })\r\n else this.$router.push({ query: { group: null } })\r\n }\r\n },\r\n getFavorate() {\r\n FavorateAPI.get(\"\").then(({ data }) => {\r\n this.$log.info(\"[LOAD FAVORATES]\")\r\n let devs = _.cloneDeep(this.devicelist)\r\n _.each(devs, v => {\r\n v.favorate = null\r\n })\r\n _.each(data.objects, v => {\r\n let dev = _.find(devs, { pk: v.dev_pk })\r\n if (dev) dev.favorate = v\r\n })\r\n this.devicelist = devs\r\n // this.setNodes()\r\n })\r\n },\r\n groupPermFilter(groups) {\r\n let perm = _.filter(groups, { has_permission: true })\r\n\r\n const addParent = fk => {\r\n if (!fk) return\r\n let exist = _.find(perm, { pk: fk })\r\n if (exist) return\r\n let parent = _.find(groups, { pk: fk })\r\n if (!parent) {\r\n this.$log.error(\"[INVALID PARENT GROUP] \" + fk)\r\n return\r\n }\r\n if (parent) perm.push(parent)\r\n if (parent.root_group_fk) addParent(parent.group_fk)\r\n }\r\n _.each(perm, v => {\r\n let fk = v.group_fk\r\n addParent(fk)\r\n })\r\n return perm\r\n },\r\n getProcessData(item) {\r\n DeviceListAPI.get(`${item.pk}`).then(resp => {\r\n let { objects } = resp.data\r\n if (hasAttr(objects, [\"prcss_name\", \"prcss_cpu_usage\", \"prcss_memory_usage\"])) {\r\n this.processData = _.map(\r\n _.zip(\r\n objects.prcss_name.split(\";\"),\r\n objects.prcss_cpu_usage.split(\";\").map(v => parseInt(v, 10)),\r\n objects.prcss_memory_usage.split(\";\").map(v => parseInt(v, 10)),\r\n ),\r\n values => _.zipObject([\"name\", \"cpu\", \"memory\"], values),\r\n )\r\n }\r\n objects.memory_uses = Math.round((objects.memory_usage / 100) * objects.memory_capacity)\r\n objects.hdd_uses = Math.round((objects.hdd_usage / 100) * objects.hdd_capacity)\r\n this.device = objects\r\n })\r\n },\r\n editDeviceName(dev) {\r\n if (dev === null) {\r\n let selects = _.filter(this.devicelist, v => v.checkbox)\r\n dev = selects[0]\r\n }\r\n var oldAlias = dev.alias\r\n let params = {\r\n context: {\r\n title: this.$t(`device_name_edit`),\r\n path: \"device_name_desc\",\r\n args: { alias: dev.alias },\r\n },\r\n value: dev.alias,\r\n placeholder: \"columns.alias\",\r\n limit: 30,\r\n submit: {\r\n size: \"sm\",\r\n color: \"primary\",\r\n text: this.$t('change'),\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, value) => {\r\n if (key === \"submit\") {\r\n if (oldAlias == value) {\r\n return this.AppState.$emit(\"show-message-dialog\", { context: { path: \"device_name_identical\" } })\r\n }\r\n DeviceListAPI.put(dev.pk.toString(), { alias: value }).then(resp => {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: \"device_name_confirm\", args: { alias: oldAlias, value: value } } })\r\n dev.alias = value\r\n store.set(storeKey, {\r\n devices: this.devicelist,\r\n groups: this.grouplist,\r\n updatedAt: new Date().getTime(),\r\n })\r\n })\r\n }\r\n })\r\n },\r\n updateRow(dev) {\r\n if (dev.aliasNew) {\r\n DeviceListAPI.put(dev.pk.toString(), { alias: dev.aliasNew }).then(resp => {\r\n dev.alias = dev.aliasNew\r\n store.set(storeKey, {\r\n devices: this.devicelist,\r\n groups: this.grouplist,\r\n updatedAt: new Date().getTime(),\r\n })\r\n })\r\n }\r\n if (dev.memoNew) {\r\n DeviceListAPI.put(dev.pk.toString(), { memo: dev.memoNew }).then(resp => {\r\n dev.memo = dev.memoNew\r\n store.set(storeKey, {\r\n devices: this.devicelist,\r\n groups: this.grouplist,\r\n updatedAt: new Date().getTime(),\r\n })\r\n })\r\n }\r\n },\r\n removeDevice(requestType, dev) {\r\n let params = {\r\n context: {\r\n title: requestType === 'delete' ? this.$t(\"delete_device\") : this.$t(\"device_logoff\"),\r\n path: requestType === 'delete' ? \"confirm_delete_device\" : 'confirm_device_logoff',\r\n args: { name: dev.alias },\r\n },\r\n withoutInput: true,\r\n submit: {\r\n size: \"sm\",\r\n color: \"primary\",\r\n text: requestType === 'delete' ? { path: \"delete\" } : { path: \"submit\" },\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, data) => {\r\n if (key !== \"submit\") return\r\n \r\n let historyParams = {\r\n act_name_id: requestType === 'delete' ? 13 : 14,\r\n act_type_id: 5,\r\n device_pk: dev.pk,\r\n member_pk: user().pk,\r\n new_value: dev.alias,\r\n old_value: dev.dev_os_id,\r\n }\r\n\r\n history.post(\"audit\", historyParams)\r\n \r\n requestType === 'delete' ? rm.remove(dev) : rm.remove(dev, 'agent_logoff')\r\n \r\n let deleteAction = requestType === 'delete'\r\n ? DeviceListAPI.delete(`${dev.pk}`).then(() => {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: \"deleted_device\" } })\r\n this.goback()\r\n this.AppState.$emit(\"device-state-change\")\r\n })\r\n : Promise.resolve()\r\n \r\n deleteAction.then(() => setTimeout(() => {\r\n this.fetchList()\r\n }, 3000))\r\n })\r\n },\r\n removeSelectedDevice() {\r\n let selects = _.filter(this.devicelist, v => v.checkbox)\r\n if (!selects.length) {\r\n this.$awn.warning(this.$t(\"no-selects\"))\r\n return undefined\r\n }\r\n\r\n const total = selects.length\r\n let count = 0\r\n\r\n let params = {\r\n context: {\r\n title: this.$t(\"delete_device\"),\r\n path: \"confirm_delete_device\",\r\n args: { name: selects.map(v => v.alias).join(\", \") },\r\n },\r\n withoutInput: true,\r\n submit: {\r\n size: \"sm\",\r\n color: \"danger\",\r\n text: { path: \"delete\" },\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, data) => {\r\n if (key !== \"submit\") return\r\n _.each(selects, dev => {\r\n rm.remove(dev)\r\n DeviceListAPI.delete(`${dev.pk}`).then(resp => {\r\n this.$awn.success(this.$t(\"deleted_device_count\", { count: ++count, total }))\r\n if (count === total) {\r\n this.AppState.$emit(\"device-state-change\")\r\n }\r\n this.fetchList()\r\n })\r\n })\r\n })\r\n },\r\n setDevGroup() {\r\n const treeApi = this.$refs.treeView\r\n let selectNode = treeApi.getSelected()\r\n if (!selectNode.length) {\r\n this.$awn.warning(this.$t(\"please_select_group\"))\r\n return undefined\r\n }\r\n let group = selectNode[0].data\r\n let selects = _.filter(this.devicelist, v => v.checkbox)\r\n if (!selects.length) {\r\n this.$awn.warning(this.$t(\"no-selects\"))\r\n return undefined\r\n }\r\n // let count = selects.length\r\n\r\n _.each(selects, v => {\r\n if (group.pk == v.device_group_fk) {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: \"identical_group\" } })\r\n return undefined\r\n }\r\n let params = {\r\n request_type: \"change_group\",\r\n device_fk: v.pk,\r\n group_fk: group.pk,\r\n old_group_fk: v.device_group_fk,\r\n errorCheck: false,\r\n }\r\n DeviceListAPI.post(\"\", params)\r\n .then(resp => {\r\n v.device_group_fk = group.pk\r\n v.checkbox = false\r\n this.$awn.success(this.$t(\"moved_device\", { device: v.alias, group: group.name }))\r\n\r\n this.fetchGroup()\r\n this.fetchList()\r\n this.groupDialog.show = false\r\n this.isCheckAll = false\r\n this.isIndeterminate = false\r\n })\r\n .catch(err => {\r\n if (err.response.data.objects.error === this.$t('device_page.remote_device_already_exists')) {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: \"identical_group\" } })\r\n }\r\n })\r\n })\r\n },\r\n valueChange(key, value, data) {\r\n this.$log.debug(`[CHANGED KEY: ${key}, VALUE: ${value}, DATA: ${data}]`)\r\n\r\n DeviceListAPI.put(`${data.pk}`, { memo: value }).then(resp => {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: \"updated_memo\" } })\r\n data.memo = value\r\n const devpk = data.pk\r\n let pdev = _.find(this.devicelist, v => v.pk === devpk)\r\n pdev.memo = value\r\n pdev.memoNew = value\r\n store.update(\"devices\", ({ devices }) => {\r\n let devn = _.find(devices, v => v.pk === devpk)\r\n devn.memo = value\r\n devn.memoNew = value\r\n })\r\n })\r\n },\r\n updateMemo(dev) {\r\n if (!this.AppState.perm.modifyInformation) return\r\n let params = {\r\n context: { path: \"please_input_memo\" },\r\n value: dev.memo,\r\n limit: 140,\r\n placeholder: this.$t(\"columns.memo\"),\r\n textarea: true,\r\n nullable: true,\r\n submit: {\r\n size: \"sm\",\r\n color: \"primary\",\r\n text: \"submit\",\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, value) => {\r\n if (key !== \"submit\") return\r\n DeviceListAPI.put(`${dev.pk}`, { memo: value }).then(resp => {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: \"updated_memo\" } })\r\n dev.memo = value\r\n const devpk = dev.pk\r\n let pdev = _.find(this.devicelist, v => v.pk === devpk)\r\n pdev.memo = value\r\n pdev.memoNew = value\r\n store.update(\"devices\", ({ devices }) => {\r\n let devn = _.find(devices, v => v.pk === devpk)\r\n devn.memo = value\r\n devn.memoNew = value\r\n })\r\n })\r\n })\r\n },\r\n selectNode(node, ev) {\r\n if (!ev) return\r\n let { data } = node[0]\r\n if (node[0].isLeaf) return\r\n\r\n // 다른 그룹으로 이동할때 테이블 전체선택 및 선택된 항목 uncheck\r\n this.selectedCount = 0\r\n this.isCheckAll = false\r\n this.isIndeterminate = false\r\n _.each(this.devicelist, v => {\r\n v.checkbox = false\r\n })\r\n\r\n if (data.pk) {\r\n if (this.$route.name === \"deviceAll\" && this.$route.params.groupPk === data.pk) return\r\n this.$router.push({ name: \"deviceAll\", params: { groupPk: data.pk } })\r\n } else {\r\n if (this.$route.name === \"deviceAll\" && !this.$route.params.groupPk) return\r\n this.$router.push({ name: \"deviceAll\" })\r\n }\r\n // }\r\n },\r\n onNodeDoubleClick(node, ev) {\r\n if (this.networkType.indexOf(\"internal\") > -1) return\r\n if (!ev) return\r\n if (ev.target.tagName.toLowerCase() !== \"div\" && ev.target.tagName.toLowerCase() !== \"span\") return\r\n if (!node.isLeaf) return\r\n let { data } = node\r\n if (this.$route.name === \"device-detail\" && this.$route.params.devicePk === data.pk) return\r\n this.$router.push({ name: \"device-detail\", params: { devicePk: `${data.pk}` } })\r\n },\r\n dropNode(nodes, position, event) {\r\n let target = nodes[0]\r\n let dest = position.node\r\n let { placement } = position\r\n\r\n // @@@ 이것 때문에 사이드바 드래그앤드롭이 안되었음.\r\n // if (!target.data.has_permission) {\r\n // this.$awn.warning(this.$t('no_perm_group'))\r\n // return\r\n // }\r\n if (!target.data.pk) {\r\n this.$awn.warning(this.$t(\"moved_device_fail\", { name: this.$t(\"all_device\") }))\r\n return\r\n }\r\n if (target.data.flag_df_group) {\r\n this.$awn.warning(this.$t(\"moved_device_fail\", { name: this.$t(\"reserved.ROOT\") }))\r\n return\r\n }\r\n if (dest.isLeaf) {\r\n let params = {\r\n request_type: \"change_group\",\r\n device_fk: target.data.pk,\r\n group_fk: dest.data.device_group_fk,\r\n old_group_fk: target.data.device_group_fk,\r\n errorCheck: false,\r\n }\r\n\r\n if (params.group_fk === params.old_group_fk) return this.AppState.$emit(\"show-message-dialog\", { context: { path: \"identical_group\" } })\r\n\r\n DeviceListAPI.post(\"\", params).then(resp => {\r\n let index = _.findIndex(this.devicelist, { pk: target.data.pk })\r\n this.devicelist[index].device_group_fk = dest.data.device_group_fk\r\n this.$awn.success(this.$t(\"moved_device\", { device: target.data.alias, group: dest.data.device_group_name }))\r\n store.set(storeKey, {\r\n devices: this.devicelist,\r\n groups: this.grouplist,\r\n updatedAt: new Date().getTime(),\r\n })\r\n if (!this.expandedList.includes(dest.data.device_group_fk)) {\r\n this.expandedList.push(dest.data.device_group_fk)\r\n }\r\n this.setNodes()\r\n })\r\n return\r\n }\r\n\r\n if (placement === \"inside\") {\r\n if (!dest.data.pk) {\r\n this.$awn.warning(this.$t(\"all_device_has_no_child\"))\r\n return\r\n }\r\n if (target.isLeaf) {\r\n let params = {\r\n request_type: \"change_group\",\r\n device_fk: target.data.pk,\r\n group_fk: dest.data.pk,\r\n old_group_fk: target.data.device_group_fk,\r\n errorCheck: false,\r\n }\r\n\r\n if (params.group_fk === params.old_group_fk) {\r\n return this.AppState.$emit(\"show-message-dialog\", { context: { path: \"identical_group\" } })\r\n }\r\n DeviceListAPI.post(\"\", params).then(resp => {\r\n this.$awn.success(this.$t(\"moved_device\", { device: target.data.alias, group: dest.data.name }))\r\n this.fetchGroup()\r\n this.fetchList()\r\n // this.setNodes()\r\n })\r\n } else {\r\n let index = _.findIndex(this.grouplist, { pk: target.data.pk })\r\n let params = {}\r\n\r\n if (this.grouplist[index].group_fk === dest.data.pk) {\r\n return this.AppState.$emit(\"show-message-dialog\", { context: { path: \"identical_group\" } })\r\n }\r\n\r\n this.grouplist[index].group_fk = dest.data.pk\r\n params.group_fk = dest.data.pk\r\n\r\n if (dest.data.root_group_fk === null) params.root_group_fk = dest.data.pk\r\n else params.root_group_fk = dest.data.root_group_fk\r\n\r\n DeviceGroupAPI.put(`${target.data.pk}`, params).then(resp => {\r\n this.grouplist[index].group_fk = params.group_fk\r\n this.grouplist[index].root_group_fk = params.root_group_fk\r\n this.$awn.success(this.$t(\"moved_device\", { device: target.data.name, group: dest.data.name }))\r\n this.fetchGroup()\r\n this.fetchList()\r\n })\r\n }\r\n } else {\r\n if (target.isLeaf && placement === \"after\") {\r\n let params = {\r\n request_type: \"change_group\",\r\n device_fk: target.data.pk,\r\n group_fk: dest.data.pk,\r\n old_group_fk: target.data.device_group_fk,\r\n errorCheck: false,\r\n }\r\n DeviceListAPI.post(\"\", params).then(resp => {\r\n let index = _.findIndex(this.devicelist, { pk: target.data.pk })\r\n this.devicelist[index].device_group_fk = dest.data.pk\r\n this.$awn.success(this.$t(\"moved_device\", { device: target.data.alias, group: dest.data.name }))\r\n this.fetchGroup()\r\n this.fetchList()\r\n })\r\n } else if (target.isLeaf && placement === \"before\") {\r\n event.preventDefault()\r\n } else {\r\n if (target.data.group_fk === dest.data.group_fk) {\r\n this.$awn.warning(this.$t(\"no_order_warning\"))\r\n return\r\n }\r\n let params = {\r\n group_fk: dest.data.group_fk || -1,\r\n root_group_fk: dest.data.root_group_fk || -1,\r\n }\r\n DeviceGroupAPI.put(`${target.data.pk}`, params).then(resp => {\r\n let index = _.findIndex(this.grouplist, { pk: target.data.pk })\r\n this.grouplist[index].group_fk = dest.data.group_fk\r\n this.grouplist[index].root_group_fk = dest.data.root_group_fk\r\n this.$awn.success(this.$t(\"moved_device_by\", { device: target.data.name, group: dest.data.name }))\r\n this.fetchGroup()\r\n this.fetchList()\r\n })\r\n }\r\n }\r\n },\r\n calcLicense() {\r\n if (process.env.VUE_APP_STANDALONE) {\r\n //\r\n return\r\n }\r\n\r\n const license = user().license\r\n if ((license.total.vol === 0 && this.devicelist.length === 0) || license.total.vol < this.devicelist.length) {\r\n this.licenseDialog.summary = {\r\n fields: [\r\n { key: \"expDate\", label: this.$t(\"end_time\"), thClass: \"text-center\", tdClass: \"text-center\" },\r\n { key: \"expVol\", label: this.$t(\"device_vol\"), thClass: \"text-center\", tdClass: \"text-center\" },\r\n { key: \"vol\", label: this.$t(\"available_count\"), thClass: \"text-center\", tdClass: \"text-center\" },\r\n ],\r\n items: [\r\n {\r\n vol: license.total.vol,\r\n expVol: this.devicelist.length - license.total.vol,\r\n expDate: license.total.lastestExpireDateString,\r\n },\r\n ],\r\n }\r\n this.licenseDialog.devices = {\r\n fields: [\r\n { key: \"alias\", label: this.$t(\"device_name\") },\r\n { key: \"device_group_name\", label: this.$t(\"group\") },\r\n { key: \"last_connected_time\", label: this.$t(\"columns.last_connected_time\"), thClass: \"text-center\", tdClass: \"text-center\" },\r\n { key: \"remove\", label: this.$t(\"delete\"), thClass: \"text-center\", tdClass: \"text-center\" },\r\n ],\r\n }\r\n this.licenseDialog.show = true\r\n }\r\n },\r\n setNodes() {\r\n let result = []\r\n let resultGroups = []\r\n let dpk = this.$route.params.devicePk ? parseInt(this.$route.params.devicePk, 10) : null\r\n let gpk = /\\d+/.test(this.$route.params.groupPk) ? parseInt(this.$route.params.groupPk, 10) : this.$route.params.groupPk\r\n let selectedGroup = null\r\n\r\n let groups = _.map(this.grouplist, v => {\r\n if (gpk && gpk === v.pk) selectedGroup = v\r\n v.deviceCount = 0\r\n const isDefaultGroup = v.name === this.$t('reserved.ROOT')\r\n \r\n if (v.name === this.$t('reserved.ROOT')) {\r\n v.name = this.$t('device_page.default_group')\r\n }\r\n \r\n return {\r\n isLeaf: false,\r\n isExpanded: false,\r\n isDraggable: isDefaultGroup ? false : this.AppState.perm.isAdmin,\r\n isSelected: !dpk && gpk === v.pk,\r\n title: v.name,\r\n pk: v.pk,\r\n root_group_fk: v.root_group_fk,\r\n group_fk: v.group_fk,\r\n data: v,\r\n }\r\n })\r\n let onlyGroups = _.cloneDeep(groups)\r\n\r\n let devs = _.map(this.devicelist, v => {\r\n if (dpk === v.pk) {\r\n selectedGroup = _.find(this.grouplist, { pk: v.device_group_fk })\r\n }\r\n return {\r\n title: v.alias,\r\n isLeaf: true,\r\n isSelected: dpk === v.pk,\r\n isDraggable: this.AppState.perm.isAdmin,\r\n pk: v.pk,\r\n device_group_fk: v.device_group_fk,\r\n data: v,\r\n }\r\n })\r\n\r\n const setParent = ppk => {\r\n let g = _.find(groups, v => v.data.pk === ppk)\r\n if (!g) return\r\n let currentPk = Number(this.$route.params.groupPk)\r\n if (!this.expandedList.includes(currentPk) && !g.isSelected) {\r\n this.expandedList.push(currentPk)\r\n }\r\n if (!this.expandedList.includes(ppk) && !g.isSelected) {\r\n this.expandedList.push(ppk)\r\n }\r\n if (g.group_fk) setParent(g.data.group_fk)\r\n }\r\n\r\n if (selectedGroup) setParent(selectedGroup.group_fk || selectedGroup.pk)\r\n\r\n groups.forEach(v => {\r\n if (this.expandedList.includes(v.pk)) {\r\n v.isExpanded = true\r\n }\r\n })\r\n\r\n result = _.concat(_.filter(groups, { root_group_fk: null }), _.filter(devs, { device_group_fk: null }))\r\n // result = _.concat(_.filter(groups, { root_group_fk: null }))\r\n resultGroups = _.filter(onlyGroups, { root_group_fk: null })\r\n\r\n let treePath = []\r\n const search = (g, counter) => {\r\n _.each(g, v => {\r\n if (v.isLeaf || v.isDevice) return\r\n let scopedDev = _.filter(devs, { device_group_fk: v.pk })\r\n if (counter !== undefined) {\r\n if (v.data.root_group_fk === null) {\r\n treePath = [v]\r\n counter = 0\r\n } else {\r\n if (!treePath[counter]) treePath.push(v)\r\n else treePath[counter] = v\r\n }\r\n _.each(treePath, (v, i) => {\r\n if (i <= counter) {\r\n v.data.deviceCount += scopedDev.length\r\n }\r\n })\r\n }\r\n v.children = _.concat(_.filter(groups, { group_fk: v.pk }), scopedDev)\r\n search(v.children, counter + 1)\r\n })\r\n }\r\n search(result, 0)\r\n\r\n const searchOnlyGroup = g => {\r\n _.each(g, v => {\r\n v.children = _.filter(onlyGroups, { group_fk: v.pk })\r\n search(v.children)\r\n })\r\n }\r\n searchOnlyGroup(resultGroups)\r\n\r\n result.unshift({\r\n isLeaf: false,\r\n isExpanded: false,\r\n isSelected: gpk === \"self\",\r\n isDraggable: false,\r\n title: this.$t('user_registered_agent'),\r\n pk: \"self\",\r\n data: { pk: \"self\", self: true, dummy: true },\r\n })\r\n\r\n result.unshift({\r\n isLeaf: false,\r\n isExpanded: false,\r\n isSelected: gpk === \"favorate\",\r\n isDraggable: false,\r\n title: \"favorate\",\r\n pk: \"favorate\",\r\n data: { pk: \"favorate\", favorate: true, dummy: true },\r\n })\r\n\r\n result.unshift({\r\n isLeaf: false,\r\n isExpanded: false,\r\n isSelected: gpk === \"all\",\r\n isDraggable: false,\r\n title: \"all_device\",\r\n pk: \"all\",\r\n data: { pk: \"all\", all: true, dummy: true },\r\n })\r\n\r\n this.nodes = result\r\n this.groupNodes = resultGroups\r\n\r\n function findNameByPk(pk, dataList) {\r\n const item = dataList.find(item => item.pk === pk)\r\n return item ? item.title : null\r\n }\r\n\r\n function buildFullNames(dataList) {\r\n return dataList.map(item => {\r\n let fullName = item.title\r\n let currentFk = item.group_fk\r\n\r\n while (currentFk) {\r\n const parentName = findNameByPk(currentFk, dataList)\r\n if (parentName) {\r\n fullName = parentName + \" / \" + fullName\r\n const parentItem = dataList.find(item => item.pk === currentFk)\r\n currentFk = parentItem ? parentItem.group_fk : null\r\n } else {\r\n break\r\n }\r\n }\r\n\r\n return {\r\n ...item,\r\n title: fullName,\r\n }\r\n })\r\n }\r\n this.groupNodesMoveList = _.filter(buildFullNames(onlyGroups), { data: { permission_flag: 1 } })\r\n },\r\n approvalStatus(ctx) {\r\n let params = {\r\n context: { path: \"reset_n\", args: { v: \"OTP\" } },\r\n submit: {\r\n size: \"md\",\r\n color: \"primary\",\r\n text: \"registration\",\r\n sort: \"new\",\r\n },\r\n alias: ctx.alias,\r\n device_pk: ctx.pk,\r\n s_pri_ip: ctx.s_pri_ip,\r\n }\r\n this.AppState.$emit(\"show-approval-request-dialog\", params, (key, data) => {\r\n if (key === \"submit\") {\r\n let submitParams = {\r\n device_pk: ctx.pk,\r\n approver_pk: data.approver_pk,\r\n approver_name: data.approver_name,\r\n post_approval: data.post_approval,\r\n start_time: data.start_time,\r\n end_time: data.end_time,\r\n approval_reason: data.approval_reason,\r\n manager_device_pk: store.get(\"manager_device_pk\") || null,\r\n }\r\n ApprovalsAPI.post(\"\", submitParams)\r\n .then(resp => {\r\n this.$awn.success(this.$t(\"approval-success\"))\r\n })\r\n .catch(err => {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: err.response.data.message } })\r\n })\r\n }\r\n })\r\n },\r\n updateAgent(device) {\r\n if (device === null) {\r\n let selects = _.filter(this.devicelist, v => v.checkbox)\r\n device = selects[0]\r\n }\r\n let params = {\r\n context: {\r\n title: this.$t(\"permissions.CSUpdate\"),\r\n path: \"update_agent_desc\",\r\n args: { current_ver: device.dev_ver, latest_ver: device.latest_ver },\r\n },\r\n withoutInput: true,\r\n submit: {\r\n size: \"sm\",\r\n color: \"primary\",\r\n text: this.$t('update'),\r\n },\r\n }\r\n this.AppState.$emit(\"show-confirm-dialog\", params, (key, data) => {\r\n if (key !== \"submit\") return\r\n RemoteAPI.put(`${device.guid}`, { type: \"update\" }).then(resp => {\r\n this.AppState.$emit(\"show-message-dialog\", { context: { path: \"update_agent_requested\" } })\r\n })\r\n })\r\n },\r\n draggableTable(item, index, event) {\r\n if (this.sorTableDrag) {\r\n this.sorTableDrag.destroy()\r\n }\r\n const el = this.$refs.deviceTableBody\r\n this.sorTableDrag = this.createSortable(el, item, index)\r\n },\r\n thumbnailViewDrag($event, dev) {\r\n if (this.sorTableDrag) {\r\n this.sorTableDrag.destroy()\r\n }\r\n const thumbEl = $event.currentTarget\r\n this.sorTableDrag = this.createSortable(thumbEl.parentNode, dev)\r\n },\r\n createSortable(el, item) {\r\n let sortableEl = null\r\n\r\n // 리스트뷰와 썸네일뷰 관련 구분자\r\n if (el.$el !== undefined) {\r\n sortableEl = el.$el.querySelector(\".lmm-table-body\")\r\n } else {\r\n sortableEl = el\r\n }\r\n\r\n let childElement = null\r\n\r\n const dragenterHandler = e => {\r\n if (e.target !== this.sidebarDragTarget.$el) {\r\n childElement = e.target\r\n this.isTargetInside = true\r\n }\r\n }\r\n\r\n const dragleaveHandler = e => {\r\n // 드래그 중인 아이템이 해당 요소 밖으로 나갈 때\r\n if (!this.sidebarDragTarget.$el.contains(e.relatedTarget)) {\r\n this.isTargetInside = false\r\n }\r\n\r\n if (e.target.nodeName === \"path\" || e.target.nodeName === \"svg\") return\r\n\r\n // 마우스가 sl-vue-tree-nodes-list 밖으로 나갈 때\r\n if (e.relatedTarget && e.relatedTarget.classList.contains(\"sl-vue-tree-root\")) {\r\n this.isTargetInside = false\r\n }\r\n }\r\n\r\n const dragoverHandler = e => {\r\n e.preventDefault()\r\n }\r\n\r\n const dropHandler = e => {\r\n if (this.isTargetInside) {\r\n if (e.target.className.includes(\"root\")) return\r\n\r\n e.preventDefault()\r\n this.nodeTitle = e.target.textContent.replace(/\\s*\\([^)]*\\)\\s*/g, \"\")\r\n\r\n // 드래그해서 마우스 버튼을 뗄 때 해당 node 정보를 얻음\r\n // 모든장치, 즐겨찾기 관련 정보는 grouplist 배열에 없어서 nodeTitle 배열을 사용.\r\n if (this.nodeTitle === this.$t('device_page.all_devices') || this.nodeTitle === this.$t('favorate')) {\r\n if (this.nodeTitle === this.$t('device_page.all_devices')) this.nodeTitle = \"all_device\"\r\n if (this.nodeTitle === this.$t('favorate')) this.nodeTitle = \"favorate\"\r\n if (this.nodeTitle === this.$t('device_page.self_registered_remote_device')) this.nodeTitle = \"self\"\r\n let index = this.nodes.findIndex(e => e.title === this.nodeTitle)\r\n this.sidebarTargetNode = this.nodes[index]\r\n } else {\r\n let index = this.grouplist.findIndex(e => e.name === this.nodeTitle)\r\n this.sidebarTargetNode = this.grouplist[index]\r\n }\r\n }\r\n }\r\n\r\n return Sortable.create(sortableEl, {\r\n animation: 200,\r\n sort: false,\r\n onChoose: evt => {\r\n this.sidebarDragTarget = this.$refs.sideTree\r\n\r\n this.sidebarDragTarget.$el.addEventListener(\"dragenter\", dragenterHandler)\r\n this.sidebarDragTarget.$el.addEventListener(\"dragleave\", dragleaveHandler)\r\n this.sidebarDragTarget.$el.addEventListener(\"dragover\", dragoverHandler)\r\n this.sidebarDragTarget.$el.addEventListener(\"drop\", dropHandler, true)\r\n },\r\n onEnd: evt => {\r\n this.sidebarDragTarget.$el.removeEventListener(\"dragenter\", dragenterHandler)\r\n this.sidebarDragTarget.$el.removeEventListener(\"dragleave\", dragleaveHandler)\r\n this.sidebarDragTarget.$el.removeEventListener(\"dragover\", dragoverHandler)\r\n this.sidebarDragTarget.$el.removeEventListener(\"drop\", dropHandler, true)\r\n if (this.isTargetInside && this.sidebarTargetNode) {\r\n this.addDevToGroup(item, this.sidebarTargetNode)\r\n this.isTargetInside = false\r\n }\r\n },\r\n })\r\n },\r\n addDevToGroup(item, node) {\r\n let params = {\r\n device_pk: item.pk,\r\n new_device_group_fk: node.pk,\r\n old_device_group_fk: item.device_group_fk,\r\n }\r\n\r\n if (params.new_device_group_fk === params.old_device_group_fk) {\r\n return this.AppState.$emit(\"show-message-dialog\", { context: { path: \"identical_group\" } })\r\n }\r\n\r\n if (this.nodeTitle === \"all_device\" || this.nodeTitle === \"favorate\" || this.nodeTitle === \"self\") {\r\n if (this.nodeTitle === \"all_device\" || this.nodeTitle === \"self\") return this.$awn.alert(this.$t('toasts_message.group_move_not_allowed'))\r\n\r\n if (this.nodeTitle === \"favorate\") {\r\n this.setFavorate(item)\r\n item.favorate !== null\r\n ? this.$awn.success(this.$t('device_page.device_favorite_removed'), {alias: item.alias})\r\n : this.$awn.success(this.$t('device_page.device_favorite_added'), {alias: item.alias})\r\n return\r\n }\r\n }\r\n DeviceListAPI.post(\"\", params).then(resp => {\r\n let index = _.findIndex(this.devicelist, { pk: item.pk })\r\n this.devicelist[index].device_group_fk = node.pk\r\n this.devicelist[index].device_group_name = node.name\r\n store.update(\"devices\", ({ devices }) => {\r\n devices[index].device_group_fk = node.pk\r\n devices[index].device_group_name = node.name\r\n this.$awn.success(this.$t('device_moved_to_group'), {alias: item.alias, name: node.name})\r\n if (!this.expandedList.includes(node.pk)) {\r\n this.expandedList.push(node.pk)\r\n }\r\n this.setNodes()\r\n })\r\n })\r\n },\r\n getGroupName() {\r\n let index = _.findIndex(this.grouplist, { pk: this.$route.params.groupPk })\r\n return this.grouplist[index].name\r\n },\r\n\r\n // 테이블 전체선택 > uncheck / check > 선택항목 리스트 변경\r\n updateSelectedCount() {\r\n let selects = _.filter(this.$refs.deviceTableBody.computedItems, v => v.checkbox)\r\n this.selectedCount = selects.length\r\n // 경우 1: 전체체크 (헤더 체크박스에 체크, 모든 원격기기 항목에 체크)\r\n if (this.selectedCount == this.$refs.deviceTableBody.computedItems.length) {\r\n this.isIndeterminate = false\r\n this.isCheckAll = true\r\n // 경우 2: 체크없음 (헤더 체크박스 언체크, 모든 원격기기 항목에 언체크)\r\n } else if (this.selectedCount === 0) {\r\n this.isIndeterminate = false\r\n this.isCheckAll = false\r\n // 경우 3: 부분체크 (헤더 체크박스 '-'값, 선택된 원격기기 항목에 체크)\r\n } else {\r\n this.isIndeterminate = true\r\n this.isCheckAll = false\r\n }\r\n },\r\n // 테이블 전체선택\r\n selectAllRows() {\r\n // 모든 원격기기 항목에 체크\r\n _.each(this.$refs.deviceTableBody.computedItems, v => {\r\n v.checkbox = this.isCheckAll\r\n })\r\n let selects = _.filter(this.$refs.deviceTableBody.computedItems, v => v.checkbox)\r\n this.selectedCount = selects.length\r\n // 경우 1: 전체체크 (헤더 체크박스에 체크, 모든 원격기기 항목에 체크)\r\n if (this.selectedCount == this.$refs.deviceTableBody.computedItems.length) {\r\n this.isIndeterminate = false\r\n this.isCheckAll = true\r\n // 경우 2: 체크없음 (헤더 체크박스 언체크, 모든 원격기기 항목에 언체크)\r\n } else if (this.selectedCount === 0) {\r\n this.isIndeterminate = false\r\n this.isCheckAll = false\r\n // 경우 3: 부분체크 (헤더 체크박스 '-'값, 선택된 원격기기 항목에 체크)\r\n } else {\r\n this.isIndeterminate = true\r\n this.isCheckAll = false\r\n }\r\n },\r\n // 테이블 sort방식이 변경되었을 경우 초기화\r\n sortChange() {\r\n this.isCheckAll = false\r\n this.isIndeterminate = false\r\n\r\n _.each(this.devices, v => {\r\n v.checkbox = this.isCheckAll\r\n })\r\n this.selectedCount = 0\r\n // this.devices.length = 0\r\n },\r\n // 아이콘뷰 우클릭 메뉴 옵션 구현\r\n showIconContextMenu(item) {\r\n this.selectedItem = item\r\n this.showIconMenu = true\r\n // 클릭 후 메뉴 x, y 좌표\r\n this.$nextTick(() => {\r\n const menu = document.querySelector(\".rightClickMenuIcon\")\r\n menu.style.top = `${event.pageY}px`\r\n menu.style.left = `${event.pageX}px`\r\n })\r\n\r\n // 온라인 & 제어권있음\r\n if (item.alive === 1 && item.approval === 1) {\r\n this.contextMenuItems[this.menuIndex.remote].status = 1\r\n this.contextMenuItems[this.menuIndex.wol].status = 0\r\n this.contextMenuItems[this.menuIndex.approve].status = 0\r\n this.contextMenuItems[this.menuIndex.live].status = 1\r\n this.contextMenuItems[this.menuIndex.update].status = 0\r\n this.contextMenuItems[this.menuIndex.restart].status = 1\r\n if (this.AppState.perm.CSFileManager && !item.disable_filetransfer) {\r\n this.contextMenuItems[this.menuIndex.transfer].status = 0\r\n }\r\n if (this.AppState.perm.useFunction) {\r\n this.contextMenuItems[this.menuIndex.delete].status = 1\r\n this.contextMenuItems[this.menuIndex.reboot].status = 1\r\n this.contextMenuItems[this.menuIndex.shutdown] && (this.contextMenuItems[this.menuIndex.shutdown].status = 1)\r\n }\r\n }\r\n\r\n // 온라인 & 제어권없음\r\n else if (item.alive === 1 && item.approval === 0) {\r\n this.contextMenuItems[this.menuIndex.remote].status = 0\r\n this.contextMenuItems[this.menuIndex.transfer].status = 0\r\n this.contextMenuItems[this.menuIndex.wol].status = 0\r\n this.contextMenuItems[this.menuIndex.approve].status = 1\r\n this.contextMenuItems[this.menuIndex.live].status = 0\r\n this.contextMenuItems[this.menuIndex.update].status = 0\r\n this.contextMenuItems[this.menuIndex.restart].status = 0\r\n this.contextMenuItems[this.menuIndex.delete].status = 0\r\n this.contextMenuItems[this.menuIndex.reboot].status = 0\r\n this.contextMenuItems[this.menuIndex.shutdown] && (this.contextMenuItems[this.menuIndex.shutdown].status = 0)\r\n }\r\n\r\n // 오프라인\r\n else if (item.alive === 0) {\r\n this.contextMenuItems[this.menuIndex.remote].status = 0\r\n this.contextMenuItems[this.menuIndex.transfer].status = 0\r\n this.contextMenuItems[this.menuIndex.approve].status = 0\r\n this.contextMenuItems[this.menuIndex.live].status = 0\r\n this.contextMenuItems[this.menuIndex.update].status = 0\r\n this.contextMenuItems[this.menuIndex.restart].status = 0\r\n this.contextMenuItems[this.menuIndex.reboot].status = 0\r\n this.contextMenuItems[this.menuIndex.shutdown] && (this.contextMenuItems[this.menuIndex.shutdown].status = 0)\r\n if (this.AppState.perm.useFunction) {\r\n this.contextMenuItems[this.menuIndex.delete].status = 1\r\n }\r\n if (this.AppState.isCorporate && this.AppState.perm.useFunction) {\r\n this.contextMenuItems[this.menuIndex.wol].status = 0\r\n }\r\n }\r\n },\r\n // 리스트뷰 우클릭 메뉴 옵션 구현\r\n showContextMenu(item, index, evt) {\r\n if (this.networkType.indexOf(\"i\") === 0) return\r\n evt.preventDefault()\r\n this.selectedItem = item\r\n this.showMenu = true\r\n\r\n this.$nextTick(() => {\r\n const menu = document.querySelector(\".rightClickMenu\")\r\n menu.style.top = `${evt.pageY}px`\r\n menu.style.left = `${evt.pageX}px`\r\n })\r\n\r\n // 온라인 & 제어권있음\r\n if (item.alive === 1 && item.approval === 1) {\r\n this.contextMenuItems[this.menuIndex.remote].status = 1\r\n this.contextMenuItems[this.menuIndex.wol].status = 0\r\n this.contextMenuItems[this.menuIndex.approve].status = 0\r\n this.contextMenuItems[this.menuIndex.live].status = 1\r\n this.contextMenuItems[this.menuIndex.edit].status = 1\r\n this.contextMenuItems[this.menuIndex.restart].status = 1\r\n if (this.AppState.perm.useFunction) {\r\n this.contextMenuItems[this.menuIndex.delete].status = 1\r\n this.contextMenuItems[this.menuIndex.reboot].status = 1\r\n this.contextMenuItems[this.menuIndex.shutdown] && (this.contextMenuItems[this.menuIndex.shutdown].status = 1)\r\n }\r\n }\r\n\r\n // 온라인 & 제어권없음\r\n else if (item.alive === 1 && item.approval === 0) {\r\n this.contextMenuItems[this.menuIndex.remote].status = 0\r\n this.contextMenuItems[this.menuIndex.transfer].status = 0\r\n this.contextMenuItems[this.menuIndex.wol].status = 0\r\n this.contextMenuItems[this.menuIndex.approve].status = 1\r\n this.contextMenuItems[this.menuIndex.live].status = 0\r\n this.contextMenuItems[this.menuIndex.update].status = 0\r\n this.contextMenuItems[this.menuIndex.restart].status = 0\r\n this.contextMenuItems[this.menuIndex.delete].status = 0\r\n this.contextMenuItems[this.menuIndex.reboot].status = 0\r\n this.contextMenuItems[this.menuIndex.shutdown] && (this.contextMenuItems[this.menuIndex.shutdown].status = 0)\r\n }\r\n\r\n // 오프라인\r\n else if (item.alive === 0) {\r\n this.contextMenuItems[this.menuIndex.remote].status = 0\r\n this.contextMenuItems[this.menuIndex.transfer].status = 0\r\n this.contextMenuItems[this.menuIndex.approve].status = 0\r\n this.contextMenuItems[this.menuIndex.live].status = 0\r\n this.contextMenuItems[this.menuIndex.update].status = 0\r\n this.contextMenuItems[this.menuIndex.restart].status = 0\r\n this.contextMenuItems[this.menuIndex.reboot].status = 0\r\n this.contextMenuItems[this.menuIndex.shutdown] && (this.contextMenuItems[this.menuIndex.shutdown].status = 0)\r\n if (this.AppState.perm.useFunction) {\r\n this.contextMenuItems[this.menuIndex.delete].status = 1\r\n }\r\n } else {\r\n //\r\n }\r\n },\r\n // 리스트뷰, 아이콘뷰 우클릭 메뉴 함수\r\n handleContextMenu(action) {\r\n const item = this.selectedItem\r\n switch (action) {\r\n // 온라인 + 제어권있음 메뉴\r\n case \"remote\":\r\n this.openModal(\"remote\", item)\r\n break\r\n case \"transfer\":\r\n this.openModal(\"transfer\", item)\r\n break\r\n case \"detail\":\r\n this.viewDetail(item)\r\n break\r\n case \"live\":\r\n this.showLiveView(item)\r\n break\r\n case \"edit\":\r\n this.editDeviceName(item)\r\n break\r\n /* TODO 프로세스 목록 구현중\r\n case 'process':\r\n break;\r\n */\r\n case \"update\":\r\n this.updateAgent(item)\r\n break\r\n case \"restart\":\r\n this.openModal(\"restart\", item)\r\n break\r\n case \"delete\":\r\n this.removeDevice(item)\r\n break\r\n case \"reboot\":\r\n this.openModal(\"reboot\", item)\r\n break\r\n case \"shutdown\":\r\n this.openModal(\"shutdown\", item)\r\n break\r\n case \"approve\":\r\n this.approvalStatus(item)\r\n break\r\n case \"wol\":\r\n this.showWOLList(item)\r\n break\r\n }\r\n },\r\n // 우클릭 후 row 밖을 클릭할 경우 우클릭 메뉴 숨김처리\r\n handleMouseClick(event) {\r\n this.showMenu = false\r\n this.showIconMenu = false\r\n },\r\n // pagination 변경되었을 경우 선택된 원격기기 초기화\r\n resetSelectedCount() {\r\n this.isIndeterminate = false\r\n this.isCheckAll = false\r\n },\r\n\r\n openDropDown() {\r\n this.tableClass = \"show-dropdown\"\r\n },\r\n closeDropDown() {\r\n this.tableClass = \"\"\r\n },\r\n\r\n // 내, 외부 field 체크\r\n checkFields() {\r\n let fields = _.cloneDeep(this.fields)\r\n if (this.networkType.indexOf(\"i\") === 0) {\r\n fields = fields.filter(v => v.key !== \"actions\")\r\n } else {\r\n fields = fields.filter(v => v.key !== \"checkbox\")\r\n }\r\n this.fields = fields\r\n },\r\n showTooltipHandler(item, state) {\r\n if (item.device_group_fk.length <= 1) return\r\n this.$set(this.showTooltip, item.pk, state)\r\n },\r\n hideTooltipHandler() {\r\n this.showTooltip = {}\r\n },\r\n formattedGroupName(item) {\r\n return item.device_group_name\r\n ? item.device_group_name.slice().sort().join(', ')\r\n : 'No Group';\r\n }\r\n },\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-eslint/node_modules/eslint-loader/index.js??ref--12-0!./device.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-eslint/node_modules/eslint-loader/index.js??ref--12-0!./device.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=70fbd114&scoped=true&lang=pug&\"\nimport script from \"./device.js?vue&type=script&lang=js&\"\nexport * from \"./device.js?vue&type=script&lang=js&\"\nimport style0 from \"./device.scss?vue&type=style&index=0&id=70fbd114&lang=scss&scoped=true&\"\nimport style1 from \"./sl-vue-tree-dark.scss?vue&type=style&index=1&lang=scss&\"\nimport style2 from \"./index.vue?vue&type=style&index=2&id=70fbd114&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70fbd114\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!./device.scss?vue&type=style&index=0&id=70fbd114&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!./device.scss?vue&type=style&index=0&id=70fbd114&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=2&id=70fbd114&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=2&id=70fbd114&lang=scss&scoped=true&\"","import axios from 'axios'\r\nimport {CreateInstance} from './config'\r\nconst remoteSessionAPI = CreateInstance('remote_session', 'launcher')\r\nconst versionAPI = CreateInstance('/lmmviewer/version.html', 'download')\r\nconst launcherAPI = (guid, cb) => {\r\n return axios.all([remoteSessionAPI.get(guid), versionAPI.get('')])\r\n .then(axios.spread((sessionResp, versionResp) => {\r\n if (sessionResp.data.status !== 200) return cb(sessionResp.data.status)\r\n const session = sessionResp.data.objects[0]\r\n const version = versionResp.data\r\n cb(null, {session, version})\r\n }))\r\n .catch(err => {\r\n cb(err)\r\n })\r\n}\r\nexport {remoteSessionAPI, versionAPI}\r\nexport default launcherAPI\r\n","import {user} from '../../api/access'\r\nimport {serv} from '@/api/config'\r\nimport LauncherAPI from '@/api/launcher'\r\nimport {RemoteAPI} from '@/api'\r\nimport {history} from '@/api/analystic'\r\nimport AppState from '@/plugins/appstate'\r\nimport Logger from '@/plugins/logger'\r\n\r\nconst execActiveX = (version, options) => {\r\n let args = ['AP2P']\r\n switch (options.command) {\r\n case 'RC':\r\n if (options.devId.indexOf('oldverion') == 0) {\r\n args = ['-c']\r\n args.push(options.kmsAddr)\r\n args.push(options.kmsPort)\r\n args.push('0')\r\n args.push('6')\r\n args.push(options.devId)\r\n args.push(options.n2nAddr)\r\n args.push(options.n2nPort)\r\n args.push(options.cSharpAddr)\r\n args.push(options.cSharpPort)\r\n } else {\r\n args.push(options.command)\r\n args.push(options.kmsAddr)\r\n args.push(options.kmsPort)\r\n args.push(options.devId)\r\n args.push(options.userId)\r\n args.push('TRUE')\r\n args.push('1')\r\n args.push(options.rcAuth)\r\n args.push(options.ftAuth)\r\n args.push(options.inputLock)\r\n args.push(options.adminAuth)\r\n args.push(options.userName.replace(/\\s+/g, ' '))\r\n args.push(options.token)\r\n args.push(options.companyKey)\r\n args.push(options.n2nAddr)\r\n args.push(options.n2nPort)\r\n args.push(options.cSharpAddr)\r\n args.push(options.cSharpPort)\r\n args.push(options.deviceName.replace(/\\s+/g, ' '))\r\n args.push(options.osType)\r\n }\r\n break\r\n case 'FT':\r\n args.push(options.command)\r\n args.push(options.kmsAddr)\r\n args.push(options.kmsPort)\r\n args.push(options.devId)\r\n args.push(options.userId)\r\n args.push(options.token)\r\n args.push(options.companyKey)\r\n args.push(options.n2nAddr)\r\n args.push(options.n2nPort)\r\n args.push(options.cSharpAddr)\r\n args.push(options.cSharpPort)\r\n args.push(options.deviceName.replace(/\\s+/g, ' '))\r\n args.push(options.osType)\r\n break\r\n }\r\n\r\n let params;\r\n if (options.devId.indexOf('oldverion') == 0) {\r\n params = {\r\n body: `\r\n \r\n `\r\n }\r\n } else {\r\n params = {\r\n body: `\r\n \r\n `\r\n }\r\n }\r\n AppState.$emit('show-hidden-dialog', params)\r\n}\r\n\r\nconst remote = (dev, noActiveX) => {\r\n var now = new Date()\r\n var pivot = new Date('2017-04-01')\r\n var serverNum = parseInt((now.getTime() - pivot.getTime()) / 1000)\r\n const {ua} = AppState\r\n const usr = user()\r\n\r\n history.post('audit', {\r\n act_name_id: 1,\r\n act_type_id: 1,\r\n device_pk: dev.pk,\r\n member_pk: usr.pk,\r\n new_value: 1,\r\n old_value: 1\r\n })\r\n\r\n if (!noActiveX && !process.env.VUE_APP_USE_ACTIVEX) noActiveX = true\r\n\r\n // IE고 대상 OS가 모바일이 아닐때 ActiveX 실행\r\n if (!noActiveX && ua.browser.name === 'IE' && dev.dev_os_id !== 4 && dev.dev_os_id !== 5) {\r\n LauncherAPI(dev.dev_os_id + dev.guid, (err, {session, version}) => {\r\n if (err) {\r\n Logger.error(err)\r\n return 'activex_error'\r\n }\r\n execActiveX(version, {\r\n command: 'RC',\r\n kmsAddr: session.kms_addr,\r\n kmsPort: session.kms_port,\r\n devId: dev.guid,\r\n userId: usr.mgrid,\r\n rcAuth: session.rc_auth,\r\n ftAuth: session.ft_auth,\r\n inputLock: session.input_lock,\r\n adminAuth: session.admin_auth,\r\n userName: session.user_name,\r\n token: usr.token,\r\n companyKey: usr.company_fk,\r\n n2nAddr: session.n2nserver,\r\n n2nPort: session.n2nport,\r\n cSharpAddr: session.csharp_api_addr,\r\n cSharpPort: session.csharp_api_port,\r\n deviceName: session.device_name.replace(/\\s/g, '_'),\r\n osType: dev.dev_os_id\r\n })\r\n })\r\n return 'activex'\r\n } else if (ua.os.name === 'Windows') {\r\n document.title = [\r\n 'LMMSE_CONTROL',\r\n 'RC',\r\n usr.token,\r\n dev.dev_os_id + dev.guid,\r\n usr.company_fk,\r\n dev.dev_os_id,\r\n serverNum,\r\n ''\r\n ].join('-')\r\n const timestamp = new Date().getTime();\r\n window.open(`${serv.download}/ManualLauncher.exe?cache=${timestamp}`, '_blank');\r\n \r\n const launcherLink = document.createElement('a')\r\n launcherLink.href = `${process.env.VUE_APP_URL_SCHEME}://param=${process.env.VUE_APP_BROWSER_TITLE_PREFIX}-RC-${usr.token}-${dev.dev_os_id + dev.guid}-${usr.company_fk}-${dev.dev_os_id}-${serverNum}-`\r\n launcherLink.style.display = 'none'\r\n document.body.appendChild(launcherLink)\r\n launcherLink.click()\r\n document.body.removeChild(launcherLink)\r\n \r\n return 'download'\r\n //} else if (ua.os.name === 'Mac OS' && window.navigator.maxTouchPoints > 0 && AppState.isApplication) {\r\n } else if (ua.os.name === 'Mac OS' && window.navigator.maxTouchPoints > 0) {\r\n let connection = [\r\n 'RC',\r\n dev.kms_addr,\r\n dev.kms_port,\r\n dev.pk,\r\n usr.token,\r\n usr.company_fk,\r\n dev.guid,\r\n usr.mgrid,\r\n dev.dev_os_id,\r\n ''\r\n ].join(':')\r\n try {\r\n window.webkit.messageHandlers.observe.postMessage(connection)\r\n } catch (err) {\r\n Logger.error(err)\r\n return 'error'\r\n }\r\n return 'application'\r\n } else if (ua.os.name === 'Mac OS') {\r\n let w = 480, h = 180\r\n var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : window.screenX;\r\n var dualScreenTop = window.screenTop != undefined ? window.screenTop : window.screenY;\r\n\r\n var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\r\n var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\r\n\r\n var systemZoom = width / window.screen.availWidth;\r\n var left = (width - w) / 2 / systemZoom + dualScreenLeft\r\n var top = (height - h) / 2 / systemZoom + dualScreenTop\r\n\r\n let params = \r\n '?device_pk=' + dev.pk +\r\n '&token=' + usr.token +\r\n '&company_fk=' + usr.company_fk +\r\n '&device_guid=' + dev.guid +\r\n '&mgr_id=' + usr.mgrid +\r\n '&os_id=' + dev.dev_os_id +\r\n '&device_id=' + dev.alias +\r\n '&user_name=' + usr.name +\r\n '&kms_addr=' + dev.kms_addr +\r\n '&kms_port=' + dev.kms_port\r\n\r\n let b64 = btoa(encodeURIComponent(`LinkMeMineViewer://${params}`))\r\n let nw = window.open(`/static/mac_launcher.html?d=${b64}`, 'maclauncher', `width=${w / systemZoom},height=${h / systemZoom},top=${top},left=${left}`)\r\n if (window.focus) nw.focus()\r\n return 'urlscheme'\r\n } else if (ua.os.name === 'iOS' && AppState.isApplication) {\r\n let connection = [\r\n 'RC',\r\n dev.kms_addr,\r\n dev.kms_port,\r\n dev.pk,\r\n usr.token,\r\n usr.company_fk,\r\n dev.guid,\r\n usr.mgrid,\r\n dev.dev_os_id,\r\n ''\r\n ].join(':')\r\n try {\r\n window.webkit.messageHandlers.observe.postMessage(connection)\r\n } catch (err) {\r\n Logger.error(err)\r\n return 'error'\r\n }\r\n return 'mobile'\r\n // } else if (ua.os.name === 'Android' && AppState.isApplication) {\r\n } else if (/Android/i.test(window.navigator.userAgent) && AppState.isApplication) {\r\n let connection = [\r\n 'RC',\r\n dev.kms_addr,\r\n dev.kms_port,\r\n dev.pk,\r\n usr.token,\r\n usr.company_fk,\r\n dev.guid,\r\n // 안드로이드 파라미터 갯수 문제로 #으로 분기\r\n usr.mgrid + '#' + dev.dev_os_id,\r\n usr.name,\r\n ''\r\n ].join(':')\r\n try {\r\n window.AndroidViewerApp.setMessage(connection)\r\n } catch (err) {\r\n Logger.error(err)\r\n return 'error'\r\n }\r\n return 'mobile'\r\n } else return false\r\n}\r\n\r\nconst transfer = dev => {\r\n var now = new Date()\r\n var pivot = new Date('2017-04-01')\r\n var serverNum = parseInt((now.getTime() - pivot.getTime()) / 1000)\r\n const {ua} = AppState\r\n const usr = user()\r\n\r\n history.post('audit', {\r\n act_name_id: 2,\r\n act_type_id: 1,\r\n device_pk: dev.pk,\r\n member_pk: usr.pk,\r\n new_value: 1,\r\n old_value: 1\r\n })\r\n\r\n if (ua.browser.name === 'IE') {\r\n LauncherAPI(dev.dev_os_id + dev.guid, (err, {session, version}) => {\r\n if (err) {\r\n Logger.error(err)\r\n return 'activex_error'\r\n }\r\n execActiveX(version, {\r\n command: 'FT',\r\n kmsAddr: session.kms_addr,\r\n kmsPort: session.kms_port,\r\n devId: dev.guid,\r\n userId: usr.mgrid,\r\n token: usr.token,\r\n companyKey: usr.company_fk,\r\n n2nAddr: session.n2nserver,\r\n n2nPort: session.n2nport,\r\n cSharpAddr: session.csharp_api_addr,\r\n cSharpPort: session.csharp_api_port,\r\n deviceName: session.device_name.replace(/\\s/g, '_'),\r\n osType: dev.dev_os_id\r\n })\r\n })\r\n return 'activex'\r\n } else if (ua.os.name === 'Windows') {\r\n document.title = [\r\n 'LMMSE_CONTROL',\r\n 'FT',\r\n usr.token,\r\n dev.dev_os_id + dev.guid,\r\n usr.company_fk,\r\n dev.dev_os_id,\r\n serverNum,\r\n ''\r\n ].join('-')\r\n const timestamp = new Date().getTime();\r\n window.open(`${serv.download}/ManualLauncher.exe?cache=${timestamp}`, '_blank');\r\n \r\n const launcherLink = document.createElement('a')\r\n launcherLink.href = `${process.env.VUE_APP_URL_SCHEME}://param=${process.env.VUE_APP_BROWSER_TITLE_PREFIX}-FT-${usr.token}-${dev.dev_os_id + dev.guid}-${usr.company_fk}-${dev.dev_os_id}-${serverNum}-`\r\n launcherLink.style.display = 'none'\r\n document.body.appendChild(launcherLink)\r\n launcherLink.click()\r\n document.body.removeChild(launcherLink)\r\n \r\n return 'download'\r\n } else if (ua.os.name === 'Mac OS') {\r\n return false\r\n } else if (ua.os.name === 'iOS' && AppState.isApplication) {\r\n return false\r\n } else if (ua.os.name === 'Android' && AppState.isApplication) {\r\n return false\r\n } else return false\r\n}\r\n\r\n// AuditHistory.save(argument, function(data){\r\n// if(data.status==200){\r\n// $scope.audit_result = data.objects;\r\n// }\r\n// });\r\n\r\nconst shutdown = dev => {\r\n const usr = user()\r\n var params = {\r\n device_pk: dev.pk,\r\n member_pk: usr.pk,\r\n act_name_id: 4,\r\n act_type_id: 1,\r\n old_value: 1,\r\n new_value: 1,\r\n // 실행시 추가 audit에는 제외\r\n type: 'shutdown'\r\n }\r\n\r\n history.post('audit', {\r\n act_name_id: 4,\r\n act_type_id: 1,\r\n device_pk: dev.pk,\r\n member_pk: usr.pk,\r\n new_value: 1,\r\n old_value: 1\r\n })\r\n\r\n RemoteAPI.put(dev.guid, params)\r\n return 'requested'\r\n}\r\n\r\nconst reboot = dev => {\r\n const usr = user()\r\n var params = {\r\n device_pk: dev.pk,\r\n member_pk: usr.pk,\r\n act_name_id: 3,\r\n act_type_id: 1,\r\n old_value: 1,\r\n new_value: 1,\r\n // 실행시 추가 audit에는 제외\r\n type: 'reboot'\r\n }\r\n\r\n history.post('audit', {\r\n act_name_id: 3,\r\n act_type_id: 1,\r\n device_pk: dev.pk,\r\n member_pk: usr.pk,\r\n new_value: 1,\r\n old_value: 1\r\n })\r\n\r\n RemoteAPI.put(dev.guid, params)\r\n return 'requested'\r\n}\r\n\r\nconst restart = dev => {\r\n // const usr = user()\r\n var params = {\r\n // device_pk: dev.pk,\r\n // member_pk: usr.pk,\r\n // act_name_id: 3,\r\n // act_type_id: 1,\r\n // old_value: 1,\r\n // new_value: 1,\r\n // 실행시 추가 audit에는 제외\r\n type: 'agent_restart'\r\n }\r\n\r\n // 원격기기 재시작에 대한 아이디 필요\r\n // history.post('audit', {\r\n // act_name_id: 3,\r\n // act_type_id: 1,\r\n // device_pk: dev.pk,\r\n // member_pk: usr.pk,\r\n // new_value: 1,\r\n // old_value: 1\r\n // })\r\n\r\n RemoteAPI.put(dev.guid, params)\r\n return 'requested'\r\n}\r\n\r\nconst remove = (dev, requestType) => {\r\n var params = {\r\n type: requestType || 'delete'\r\n }\r\n\r\n return RemoteAPI.put(dev.guid, params)\r\n}\r\n\r\nexport default { remote, transfer, reboot, shutdown, restart, remove }"],"sourceRoot":""}